There is no proper way. It's just a matter of style.
I personally like using the login as the startup form and have it pass itself as a reference to the MDI form (or other form that is suppose to be loaded after you log in) and then just hide itself (after resetting the username and password values first of course).
Goes something like this :
Code:
'if username and password matches
mdiMain.SetLoginForm(me)
'my own sub that accepts a reference of the frmLogin type
me.hide
So whenever my mdiMain have to go back to the login form i just do this.
Code:
_login.Show '_login holds the reference passed in by SetLoginForm
me.dispose 'close the mdiMain