Some comments here say its not possible to do this without Flash but I have seen this done in pure html before. Its common in complex demo / visualisation apps and web apps.
The trick is that the page loads normally then some JavaScript code kicks in to preload all the images and other resources into a cache. You can monitor the progress of this using JavaScript and update a progress bar while you're doing it.
This article discusses caching images only but the first comment at the end links to an article about caching other resources:
I've also seen this done quite a lot if the page loads a lot of its content through an AJAX request. To enable this would require quite a structural change to your site though if you're not already loading in parts of the page via AJAX. If you use ajax then you can send the request out, set a spinner animation to display, and then have a "ajax request complete" callback which would remove the spinner and say "done!". This is not as interactive as the progress bar option though.
Finally you could do a really basic version of this I guess by adding some just after the <body>
to hide the page and then in a jquery ready event you could fade the div out that hid the content. No interactive progress bar but I think that would work.