This should prevent caching:
HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Response.Cache.SetValidUntilExpires(false);
HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Response.Cache.SetNoStore();
and probably a good idea also server-check when form gets submitted and return error in case by some dark magic cache works. which it really shouldn't.
edit: this will prevent the browser's 'back' button from loading up cached page, which is what the question was about. Of course you would need check on page-enter to see if the transaction has already taken place.