Here are a few ideas to start with.
In general, startup/shutdown problems often can be traced to audio and/or video issues; check to be certain your audio and video drivers are up to date.
See what happens if you eliminate all of your Startup programs, then re-enabling them one at a time between fairly lengthy sessions of use followed by reboot attempts. It very well could be a problem there.
If that doesn't help, seee what happens when you start from a
Clean Boot. If you can shut down consistently without problems followin a clean boot, go back to the System Configuration Utility and re-enable Process System.ini File, Process WIn.ini File, and Load Startup one at a time, runnin' for a while and shuttin' down from time to time before addin' the next, to see if you can narrow in on the problem.
You might find this article helpful;
Clean Boot Troubleshooting. My suggestion would be first to go with shuttin' off 3rd-party services first, then re-enablin' them one at a time to see if one of them is the problem.
Every once in a while a service hangs on shut down and Windows allows a grace period for a service to shut down on its own before killin'it. The time Windose will wait is in the system registry. You can change this setting to force Windows kill reluctant-to-quit services more quickly.
Start>Run - type (without the quotes) "regedit", click "OK". In the Registry Editor, navigate to
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control. Click on the "Control" Folder. Select "Wait To Kill Service Timeout", right click on it and select "Modify". Set it to a value lower than the default 2000. I've found 200 works well for me.
Note - its wise to
Backup the Registry before fiddlin' with it.
Other common problem areas for shutdown issues are ACPI and USB - we can get trouble-shootin' into those if you want to.