Чирс, это очень распространенная проблема, с которой сталкивается каждый веб-разработчик. И угадайте, что, у него есть очень хорошо принятое решение.
Решение известно как PRG (Post -> Redirect -> Get). Подробнее об этом читайте на http://en.wikipedia.org/wiki/Post/Redirect/Get
Как правило, вам нужно оставить страницу в режиме HTTP GET, чтобы, даже если пользователь обновляет страницу, никакие данные не отправлялись повторно. Итак, вы отправляете форму, перенаправляете страницу на URL, который отображает недавно отправленные данные, выполняя запрос GET.
EDIT
Согласно приведенному ниже комментарию кажется, что Крис уже следует вышеупомянутой парадигме. Отлично. Но он все еще видит повторные представления формы. Я бы предложил при первом представлении заменить кнопку загрузочным изображением (в первую очередь), чтобы пользователь не увидел ни одной кнопки для повторного нажатия:)
$(document).ready(function() {
// function which handles form submission
$(#submitButton).replaceWith("<img src="./images/myLoader.gif>");
// do the actual form submission after this
...
});