Y la pregunta del millón... ¿Quién creó la instancia de TForm2?
Si no tienes puesto que tu proyecto cree automáticamente al inicio los formularios, cosa que no recomiendo, tienes que encargarte de crear la instancia del mismo. Es un error típico de los programadores en VB cuando migran a Delphi, ya que en VB no queda claro quien crea los formularios, con solo llamarlos se crean.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if form2 = nil then
form2 := TForm2.Create(self);
form2.ShowModal;
end;
Saludos!