Lascia che sia il Main a gestire la faccenda:
codice:
using System.Windows.Forms;
static void Main()
{
    frmLogin fl = new Login();
    DialogResult dr = fl.ShowDialog() ;
    fl.Dispose();
    if(dr == DialogResult.OK)
        Application.Run(new MainForm());
    return;
}
.
Nel codice di Login (o come si chiama) subito prima della sua chiusura se l'autenticazione riesce inserisci
codice:
this.DialogResult = DialogResult.OK
; se non riesce, invece
codice:
this.DialogResult = DialogResult.Abort
.