Hola,
Pues la solucion es redireccionar. GRabas en la base de datos y con un header() redireccionas. Asi no pueden recargar la pagina, porque en ningun momento sabe el navegador cual es.
Y ya veo que pones en el codigo que no puedes usar el header(). Pues me temo que debes replantearte la estructura de la pagina.
Yo normalmente planteo todas las paginas poniendo al comienzo todo el codigo PHP que hace cosas que no tienen que ver con la salida, y luego el HTML y el codigo PHP que genera salida. Es cuestion de ser ordenado. Para grabar en la BD no necesitas ninguna salida.
Como solucion intermedia podrias usar las funciones de buffer de salida (
www.php.net/ob_start). Empeora el rendimiento.
Saludos.