Easy.
Just put "Wait 8", or however long it takes to load all the preferences and update them, in seconds, after IPrefs, and that should fix it.
If the problem is because VisualPrefs is hanging the end sequence, just as workbench is about to start loading WBStartUp programs, then I think its something like this (I just turned my Amiga off for the night, nearly time to hit the hay...):
IPrefs ;or FastIPrefs, or whatever
Wait 3
VisualPrefs
Wait 8
I don't know if it was my technique for guessing the problem and trial-erroring the logical solution and getting it right or dumb luck, but it fixed my problem.
Addendum:
When IPrefs, which detaches from the CLI, comes to the last step it assesses the pattern preferences. The Screen pattern is loaded first, then the Workbench pattern, then the Window pattern. They are all loaded and decoded then remapped, before LoadWB, only you can't see two of them, because there can be no windows open yet.
I usually have my Workbench as a small window in the middle of my very-large virtual display. Because most of my applications can run on the Workbench, I still have access to Workbench from each of my four virtual desktops.
I usually have the depth gadget visable always, so its pretty much one horzontal stroke and a flick to the depth gadget, a click and an accellerated mouse down the screen and you can see the entire Workbench desktop.
Further, when I still had a working C=1942, I used the Workbench backdrop as a psuedo-alpha-channel to the Screen backdrop, giving a cool effect, and allowing you to hide icon names below the bottom of Workbench's window frame, creating a nice Dock effect.
And the work was fun.
Tomorrow, I'll put one of my snapshots on the web.
benJamin
"Too much information"