I know this is an old question, but I just stumbled upon it and am pretty surprised no one has mentioned SetVisibleCore:
bool isVisibleCore = false;
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(isVisibleCore);
}
In that code snippet, as long as isVisibleCore remains false, the form will remain invisible.