Eine solidere Lösung wäre einen Compiler zu verwenden, der besser ist (z.B. FreePascal mit "Corba-Interfaces").
Wenn man bei Delphi bleibt muss man eben den unsichtbaren Refenz-Zähler Kram so gut es geht aushebeln und höllisch aufpassen.
Richtig nutzen wäre eine Alternative... sprich nur Interfaces verwenden oder keine.
P.S: Zur Laufzeit mit Supports zu arbeiten ist etwas, was man so gut es geht vermeiden sollte. Eine Haupterrungenschaft der Objektorientierung war, dass man statt mit schwammigen Pointern jetzt mit feste Typen arbeiten kann. Wenn man jetzt wieder anfängt zur Laufzeit Pointer herumcasten ist das irgendwie sehr Retro.
Eben das passiert ja nicht. Supports prüft ja, ob das Interface unterstützt wird, arbeitet also ähnlich wie as bei Objekten. Deshalb ist das ja gerade typsicher. Im Gegensatz zu einem harten Cast bei Objekten.