A mi me pasó algo parecido con Delphi 2005. Creo que el problema era que si no se metía bien la clave, no se ejecutaba nunca la sentencia "Application.run", y al cerrarse todo era el propio datamodule el que generaba la excepción.
Yo lo solucione poniendo algo así:
Código Delphi
[-]
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(Tfrm_main, frm_main);
if Tfrm_login.Execute then
begin
Application.MessageBox('Bienvenido.', 'Bienvenido') ;
Application.Run;
end
else
DataModule1.Free;
Un saludo