That's what I did, I did the contents of my for loop in a function that runs on the OnUpdate event, and used a global variable in place of a counter. Isn't that what you meant?
That made it take well over a minute, when it took a few seconds with the for loop.
EDIT: It seems go faster if I use the OnValueChanged event of the status bar rather then the OnUpdate, and it now takes a little under a minute, but still not a few seconds. Hmm...
That's because if you were doing say 10000 loops, that might take 5 seconds. But when you use an OnUpdate, and your code is doing 1 loop per OnUpdate, then since Onupdates run once every frame, you'll be taking 10000 frames to run the entirety of your loops. If you play wow at say 100 FPS, then that's 100 seconds, or 1 minute 40 seconds.
The solution? Run say 10 loops per OnUpdate/frame, not 1, and that 100 seconds becomes 10 seconds, and you can animate a nice progress bar while you're at it over the 1000 frames in that 10 seconds.