Hola,
Depende... pero a veces puede ser útil usar "FreeAndNil" en lugar de "Free". Creo que por ahí pueden ir los tiros aquí. La variable "MiForm", en este caso, apunta a "algo" que tal vez es sólo basura en la memoria, desde luego no será al objeto... que ha sido liberado. Pero si a la variable "MiForm" le asignas el valor "nil",... entonces "Assigned" no debería retornar "true"... si no estoy equivocado.