Thanks for getting me to spit out the right answer, Force Flow. =p I always forget that Windows gets a bit antsy with those things until it happens.
The best way I can think of to implement a delay without Windows freezing would be to create a background worker with a function that just has a while loop that loops until enough time has passed (so get the start time then loop until (start + delay >= now), then return.
If you wanted to it disable everything, just wrap the delay in with the Enabled = False/True statements.
You could also make it a bit more flexible by giving it a function to call when it was done delaying (to enable everything or something).