Si te entiendo, tu creas una forma y utilizas una variable que apunta a ella. Algo como esto:
Código Delphi
[-]
Miforma:= TMiforma.Create(nil);
Sin embargo a la hora de borrarlo utilizas la lista Forms de la variable Screen, supongo que lo haces así para no tener que preocuparte de que formulario fue el ultimo que abriste. Pero como has dicho, el contenido de la variable no cambia y esta pasa a apuntar a una forma que ya no existe. Se me ocurre una posible solución:
Código Delphi
[-]
function Existe(F: TForm): Boolean;
var
i: integer;
begin
for i:= 0 to Screen.FormCount - 1 Do
if Screen.Forms[i] = F then
begin
Result:= TRUE;
Exit;
end;
Result:= FALSE;
end;
Esta función te dirá si la variable apunta a una forma real, o por el contrario su valor ya no sirve.