Para qué complicarse tanto,tan sólo has esto en el evento OnCreate de tu Formulario principal:
Código Delphi
[-]procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=False;end;
Luego en tiempo de Diseño pones la propiedad
Visible=True y su propiedad
FormStyle=fsNormal de tu formulario que es donde el usuario se Loguea, de esa manera cuando corra tu aplicacion lo primero que se va mostrar es el formulario donde se loguea.

Para el caso de sólo permitir 3 intentos pues te es suficiente tener una variable que cuente las veces que el usuario intentó, ésto sería en el
boton de Aceptar de tu formulario de Logueo mas o menos así:
Código Delphi
[-]procedure TFormDeLogueo.ButtonAceptarClick(Sender: TObject);
begin
if El_Logueo_EsValido then begin
Self.Hide; Application.MainForm.Show; end
else
begin
Cantidad_de_Intentos:=Cantidad_de_Intentos+1;
If Cantidad_de_Intentos=3 then
begin
ShowMessage('Intentos Agotados');
Application.Terminate; end
else
ShowMessage('Usuario desconocido..');
end;
end;
Desde luego debes inicializar la variable
Cantidad_de_Intentos con cero, ésto lo puedes hacer en el evento OnCreate de tu formualrio de Logueo

.
Espero te sea de Utilidad.

.
Saludos...
