It is most likely a device driver hanging up.
The first thing to try is to perform a cold boot (start with the machine off) and press F8 for advanced startup options. You can try Last Known Good Configuration and if that doesn't work use Enable Boot Logging, which will write a log of everything that happens during the boot process. The boot log will often show which, if any, driver is causing the problem.