As a number of people, I had problems when upgrading automaticaly from v3.0 to 3.01. Process went dead after saying "Unpacking the update..."
I saw new package has been dowloaded and extracted, and I could get through by commenting out dowload and extraction in Core_Upgrader->upgrade and providing $working_dir for next step.
A refresh of page was all that was needed to complete successfull upgrade.
I suggest to include a two/three step process in upgrade to separate dowloading, unpacking from remaining of upgrade process, as these are time consuming tasks.
I suggest also to consider moving files instead of copying as it is far more host ressources consuming than move: but perhaps there are reasons not to do that?
Unfortunately, I'm not expert enough in wordpress internal operation to do these changes properly by myself.
May be these can be done by creating a temporary file for each step test it and callbacks upgrade url ... don't know for sure...
Do you think there is something to do in that direction or am I off track?