When it hangs, are typing halt, or reboot? Or are you shutting down in KDE? Does it drop into the console before it hangs?
Try editing your /etc/inittab file, and setting the run level to 3
# The default runlevel is defined here
when you exit X to shut down, do it the good old way (type halt or shutdown). Its possible that is a bug in X. That happened to me sometimes with my old PC.