There are quite a few ways to disable the submit functionality after the user clicks submit once.
1) Instead of using a submit button, use a regular button which calls a javascript function. This function submits the form, or if a flag has been set indicating the form was already submitted, does not submit the form.
2) Actually disabling the submit button is easier. Refer to
http://www.dynamicdrive.com/dynamicindex11/submitonce.htm for the code.
As for the second part of your question, I posted a possible solution to this problem in some detail a while ago either on this board or on
www.theserverside.com. It didn't get much attention which surprised as I too thought this issue would be more widely addressed. If you can find that post (search using my last name... it is pretty distinctive) it will describe a means whereby you can probably accomplish this. I am pretty sure my approach would work if not for the little quirks I stumbled across which could most likely be accounted for quite easily.
Good luck and if you find a good answer please post it.
Steve