When you are troubleshooting a problem with your Windows especially a Windows Start up problem, the best place to start would be to create a Boot Log. This would create a file named Ntbtlog.txt in the C:\Windows directory with the list of drivers that tries to load. It adds entries for every successfully loaded driver referred by “Loaded Driver” and failed drivers reffered by “Did not load driver”.
This could define the root cause of the problem. It could be a device driver or a startup item that Windows tries loading at the startup. Once identified you can then fix the driver or startup item by either disabling it or updating to a proper version.