I'm surprised everyone has offered solutions but no one has bothered to check the Event Log and the Performance Monitor. Windows 7 comes with tools to check your device drivers, yet we still do things the old fashion way. These will help you narrow things down immensely. Everytime a system starts, shuts off, logs off and hibernates, an entry is recorded in the System Log. I'd check that first by firing up the Event Viewer.
Next I'd fire up the Performance Monitor. Go under Control Panel/Performance Tools/Advanced Tools. This is like the Security Center popup crap you get all the time. Except this is for performance. You'll see the Event Viewer there. Also Windows logs the time it takes for each device driver to wake up and to go to sleep and will flag anything abnormal at the top of the window.
If none of those help, click the Generate System Diagnostic Reports. This will check all your device drivers for you.
If that STILL doesn't help, we can at least eliminate the Device drivers. Now we look for running proccesses that don't want to go to sleep. You can narrow them down by first eliminating all startup programs. Fire up "MSCONFIG
." Just type it into the Search box. Select "Selective startup and uncheck Load "startup items."
Next, switch to the Services tab. Check the box "Hide Microsoft Services" then hit Disable all. This will disable all non essential startup services. Now restart the computer. You should have a bare essentials bootup. It is important you do it this way and NOT safe mode.
Then try hibernating. If that is successful, start enabling a group of services and startup programs at a time and keep hibernating.
If even a bare essentials bootup won't hibernate, we can safely say it is a hardware issue.