Se deseja que não se envie até que não esteja tudo preenchido, você tem duas possibilidades:
- Fazer uma comprovação com Javascript antes de enviar o formulário. Só se envia se tal comprovação for correta.
- Fazer uma comprovação com PHP na página que recebe o formulário. Só se gera o correio eletrônico para enviar o formulário se a comprovação for correta. Se não for, o melhor é mostrar uma mensagem de erro e voltar a escrever o formulário na página com os dados que se tinham preenchido até o momento.
A diferença entre uma comprovação e outra é que com Javascript a comprovação é dependente do computador do visitante e com PHP a comprovação é independente do computador do usuário. É mais segura a comprovação com PHP.
Referências:
Seção de Javascript
Manual de formulários e Javascript
Seção de PHP
Por Miguel Angel Alvarez