Here's a trick that I use to prevent users from ever reposting a form. So far it has worked great for me. Maybe it could work great for you.
Step #1: Create a page with an HTML form. somepagewithform.asp
Step #2: Send that form to an ASP page that is solely used for processing the form contents and updating database, etc.. somepageprocessingform.asp
Step #3: Create a destination page to automatically navigate to when the processing of the form is complete.
Option #1: Use Server.Transfer to navigate from Page #2 to Page #3. I have never tried this, but I believe that the page that processed the form dissapears on the server. The nice part about Server.Transfer is that your form collection, variables, and query string collection remain in tact and can be accessed on the destination page if needed. If the user hits refresh on the destination page, it will simply refresh that page. It won't re-submit the form.
Option #2: This is the one that I use. On the processing page, create all of the script to process the form, update the database, etc.. at the top of the page, before you create any HTML tags. Below the processing script, write an Empty HTML page with a javascript onLoad=someFunction() statement in the body tag. Then in the javascript someFunction() function, use the method location.replace(destinationpage.asp). This will immediately navigate to the destination page after the script has executed. The key here is the location.replace(url) method in javascript. It will actually replace the processing page in history with the destination page. The processing page will never be written to the browser history. If the user hits the refresh button, it will simply refresh the destination page. If they hit the back button, it will simply take them back to the form page. The reason I like to use this method is because I can temporarily disable the location.replace(url) method and use Response.Write within the script to troubleshoot errors during development.
Just a few ideas.
ToddWW