This sort of thing is usually caused by a corrupted preference file (or other file - I've even had it occur with a corrupt font in the Classic font folder!)
If you can access it via target disk mode (or in single user mode, or whatever), try renaming the /Library directory (which contains preferences, fonts, etc) to something like "Library.backup", and then restart.
The system will automatically create a new /Library directory. Of course you will have lost all your global preference settings, but you can get them back by removing the new Library directory and renaming the backup one back again.
If this fixes the problem, then you need to figure out which file within the /Library directory is at fault. You can do this by trial and error copying files from the backup Library directory to the new one and restarting each time.
Let us know if this helps or not.