hola:
Teoricamente el form de Login de las aplicaciones debe mostrarce antes de que aparezca el form principal, pero lo que quieres hacer se puede hacer con:
Código:
procedure TFrmPrincipal.FormShow(Sender: TObject);
begin
with TFrmLogin.Create(Self) do
try
if ShowModal = mrCancel Then
Self.Close;
finally
Free;
end;
end;
Esto debería funcionar correctamente....

Para que no te muestre el Form Principal este código debería estar en el OnCreate... estas seguro que esta en el OnShow, no?