First I will say that I don't know what your specific problem may have been, but I can add to your troubleshooting arsenal and describe what I would do faced with the same situation.
I would disable the Automatic Update function, at the service level (ie, Run > Services.msc) There are 4 services that are required for AutoUpdates to function properly:
Automatic Updates (wuauserv)
Background Intelligent Transfer Service (BITS)
Cryptographic Services (CryptSvc)
Event Log (Eventlog)
I completely disable the first one (wuauserv) - the other 3 may be/are required for other things. That's my first line of defense against mysterious computer behaviors. But then, I keep alert via other means as to when I need to go get a critical update, so be aware of that if you plan to disable this.
2) In answer to the rhetorical question about "last working config" being useful ever, I have to answer that yes, I have found it to save me from myself. In the registry, there is an entry with your last working config, and if you have mucked things up really badly, upon reboot you can opt for that and it will retrieve the last good working config -- so if it does not work for you, then your issue started before the last prior working boot, OR someone somehow altered those settings in the registry (wouldn't put that past malware) OR it has nothing to do with the registry (eg, immenent hardware failure, corrupt file somewhere, like a driver or other critical bootup file like ntdetect.com or ntldr or hal.dll)
For reference, the registry key in question is:
HKEY_LOCAL_MACHINE\SYSTEM\Select
That key will show you the ControlSet status (there are usually 3 similar keys, CurrentControlSet and then a couple called ControlSet001 and ControlSet002 (or 3 or 4 or whatever) - those are the backups, so don't mess around in them because they just may save you some day. CurrentControlSet, however, can be played with with relative impunity since you can always opt for the "last good working" one if you get into a mess.
If you know how to alter your boot.ini, you might want to add the "sos" line to it (or post here the content of your boot.ini file, in your root directory (eg, c:\)
Often when the bootup hangs where you describe, there is a disk check running in the background, and if it's the complete one, it can take quite awhile.
The fact that the System Restore did not help is a good clue, but I'm not sure yet what it means - I'd have to think about it further.
It's good to know that there is a backed up version of your registry that you can get ahold of if need be - the 5 "hives" are located in the c:\windows\repair directory. If you get into real trouble, you can go into the Repair option (if you don't know what that is we can post further) and just swap out all of those registry "hives" with the original ones.
I've got more thoughts but will post this for now, in case any is useful to you. I've got some good links I can dig up and post later.
editing to say that upon re-reading your post, I agree with your conclusion, that it's a driver issue. Perhaps use the manual update and tediously add the updates one at a time until you find which is the culprit?
also adding a couple of links that, while very detailed, may prove useful to the insatiably curious:
http://blogs.msdn.com/ntdebugging/archive/2007/06/19/how-windows-starts-up-part-1-of-4.aspxhttp://blogs.msdn.com/ntdebugging/archive/2007/06/28/how-windows-starts-up-part-the-second.aspx