Du könntest im Destructor prüfen, ob Deine Objektinstanz Deinem globalen "Muster" entspricht...
Delphi-Quellcode:
destructor TMuster.Destroy;
begin
if Muster = Self then
Muster := nil;
inherited;
end;
Dadurch wird die Verbindung gelöst, egal wann und wie die Instanz aufgelöst wird. FreeAndNil ist dann (in dem Fall) nicht nötig.