For the actual coding, you might find it a bit better to not use a Timer. Instead, show the splash screen while loading your main form (and anything else you want to load). Once the main form is loaded, it unloads the splash screen. On a fast computer this will mean the splash screen is barely visible, on a slow computer, it will be visible for longer.

Remember that the idea of a splash screen is to simply make your program appear to load faster. By showing a splash screen, it gives people quick feedback that tells them your application is loading (otherwise they double click again and load it twice). And there is a general conception by people that if you can't see an application, it can't do anything (although it isn't particularly relevant here, I've noticed that people also seem to be led to believe that a larger window means greater power, while a small windowed application wouldn't use as much processor power). If you write a long loading application, test it with and without a splash screen, and you will see a definate difference in the perceived loading speed.

With that said, if for some reason you feel that you must show the popup (shareware registration reminder?) then put in a timer, but only set the timer to be the *minimum* time it takes for the splash screen to unload. To do this, you can use the QueryUnload method of the form to say that you aren't ready to be unloaded yet.