Hola:
En la definición del formulario ya tienes el onsubmit="return validar_formulario()", así que tienes que editar esa función para que devuelva (return) false en las cancelaciones.
Uno de los "if" termina con Publicar=false;... eso lo podrías repetir en los restantes if, y como última línea, en vez del odioso submit(), poner return Publicar... que tendrías que inicializar al principio con true.
Cuando lo tengas, avisa que te puedo plantear una mejora (pero vayamos por partes, como dijo Jack)
Saludos