Wenn du den Owner des Panels auf den übergebeben setzt und den deines Images auf das Panel, dann brauchst du dich um die Freigabe nicht mehr zu kümmern.
Delphi-Quellcode:
constructor TPaneledImage.Create(AOwner: TComponent);
begin
FPanel := TPanel.Create(AOwner);
inherited Create(FPanel);
// Eigenschaften für das Image im Panel festlegen
Align := alClient;
end;
procedure TPaneledImage.SetParent(AParent: TWinControl);
begin
FPanel.Parent := AParent;
if csDestroying in ComponentState then
inherited SetParent(AParent)
else
inherited SetParent(FPanel);
end;
Das Parent brauchst du mit diesem SetParent nicht in Create setzen, denn das passiert nach der Erzeugung ohnehin erneut. Deshalb bringt das dort rein gar nix.
Den Destruktor brauchst du so wie hier geschrieben gar nicht schreiben.
Bei dem SetBounds machst du einen Denkfehler, wenn Left usw. einzeln gesetzt werden, schau dir dann die Werte einmal an.