Thank you everyone for sharing your code with me. There were quite a few excellent submissions and I learned a few things. Here are the top entries I received so far for the challenge. I'll add to this list if any more come in that I feel are worth mention.
crms -at- sima.com is an Elite ASP.NET hacker and submitted this solution:
http://weblogs.asp.net/dannychen/articles/439435.aspx
Raj Kaimal is an Elite ASP.NET hacker and submitted this solution:
http://weblogs.asp.net/dannychen/articles/439436.aspx
Raj also gets extra credit for coming up with a sample page using async tasks to demo his control.
Both of these are very fine solutions, but not quite perfect. Most critically, both run into an issue that I don't know if it can even be worked around. Intermittently, ASP.NET throws an error:
Session state has created a session id, but cannot save it because the response was already flushed by the application.
I talked with some dev's about this and they seem to think it's pretty cut-and-dry. Using Response.Flush pretty much causes this and can't really be worked around. And this can't really be done without Response.Flush.
Secondly, both are hardcoded to display a fixed message. It would be really nice if they were Templated instead to give the users flexibility in the display. This is a trivial amount of work, however...
None-the-less, I learned that this was indeed possible and in-fact, not that hard to do. Hopefully someone else will be able to benefit from these examples.