!!!SIMPLE!!!!
1. Try Start - Run - type in "msconfig", and click the Startup Tab.
2. Bottom Right, click "disable all", then apply, then close and have it reboot (it will probably still hang on shutdown right now).
3. After you have it restarted, put a check in the checkbox of the system config utility window, and then hit OK. Now shutdown again.
Did it hang again? If not, then there's something in the startup menu that is causing your machine to hang when it shutsdown. Now you can go back into msconfig, and start re-checking [one-by-one, and rebooting] the important ones (usually you will only need your antivirus, firewall, and sometimes ISP software running).
See if this helps - you really want to keep your startup items to a minimum anyways.