Если не воспроизводится ошибка в тестовом проекте, то зачем тогда выкладывать его? А вообще, зачем Вам создавать/уничтожать в "другом" месте модальную форму? Может сделать как-нибудь так:
Код:
procedure SomeButtonClick(Sender: TObject);
begin
with TMyModalForm.Create do
try
if ShowModal = mrYes then
begin
// do something
end;
finally
Free;
end;
end;