While in safe mode go to start, run, type msconfig, check diagnostic startup. Restart in normal mode, and if your computer starts fine go back to msconfig, click the startup tab, and check each item one by one and restart, as soon as the problem comes back you know that the last thing checked is causing the problem, so go back to safe mode, uncheck it, and check the rest.