Hrm... yes, I did miss this one... thanks for the bump.Your best bet would be to add your validation code within the constructor of the form right after the InitializeComponent() method. That way, everything is initialized (controls and form components). If you throw an exception here, then you can use a try/catch around the creation of the object (when you call New MyForm()) to make sure it is created correctly.
If you want to try and stop the form during the Show(), and not the instantiation of the object, then you'll want to override the SetVisibleCore() method of the form. Do your validation at the top of the method and throw an exception if the form is not valid; then, at the end of the method, make sure you call MyBase.SetVisibleCore() or the form will never show. This is the method that we used to prevent a form from showing when the user is denied security privilages.
You don't have to do both, just do the one that fits your needs the best.