Does it happen in safe mode too? If not, then it is probably a startup program or driver that doesn't run in safe mode that is causing it. Use MSCONFIG.EXE to shut off all startup programs and see if it stops happening. Then you can track down which one does it by this process: then re-enable the startup programs one (or a few) at a time, reboot, and when the problem occurs again, there is your culprit. If you have a great number of apps to narrow down on in trying to track down the culprit, do it instead by dividing up the loading programs into successively smaller halves: disable half of them; if the problem doesn't go away, then the offending app is within the other half, so divide that group into half; or if the problem does go away, then the disabled group contains the offender, so again narrow down by dividing in half.
In Windows XP/Vista: If the problem continues to come up with all startup programs disabled, then it is probably a driver or service. You can click on the Services tab in MSCONFIG, click on the button for Hide All Microsoft Services, leaving only third-party services displayed, then try turning them off in the same way you did for startup programs. Finally, if third-party services are eliminated from being the cause of the problem, you could try narrowing down on Microsoft services in the same way.