Hast du auch die ROT (=Running object table) benutzt?
Dein
COM-Objekt sollte sich mit
RegisterActiveObject(Self, CLASS_DeineCoClass, ACTIVEOBJECT_WEAK, FActiveObjectHandle);
selbst in der ROT registrieren und am Ende mit
RevokeActiveObject(FActiveObjectHandle, nil);
selbst von der ROT entfernen.