I think it's because the Form_Load event happens before the form itself is shown, therefore there is nothing to hide. I'm not sure but that's my guess, I don't have a solution for you yet though. I'm sure someone here will come up with something soon.
The form is shown by the shown event.
Hiding the form before this has no effect as the Show method will override it.
My code uses the forms Opacity property to make the form invisible.
Since you do not actually need to 'hide' your form you can set Opacity to 0 in form load then set is to 100 in your timer event.