A while back iTunes started failing to upgrade on my Mac. I run OS X 10.4. Since I'm not an iTunes user I didn't give it much thought. I assumed things were going to work on the next upgrade. This never happened. So after a while I decided to take a closer look.
Apparently the iTunes upgrade uses some shell scripts. And these scripts were having a problem with me configuration. I had installed Fink on my system (in the directory /sw). My startup scripts load zsh (from /sw) if present. Removing this allowed iTunes to install/upgrade. What I actually did was rename /sw to /sw2 while I installed iTunes, then move it back.
So, if you're having trouble with upgrading iTunes because it hangs, check to see if you run a shell other than the default one or if you're loading something in your shell startup scripts.
I haven't written apple, but what they need to do is define what shell to use in their install scripts and not just execute whatever the user has as their default environment.