A ver...
De partida, pasar todos los datos de vuelta a la pagina del formulario vía GET no es una buena practica. Primero, porque los datos quedan visibles y segundo, porque pasar parámetros a través de la URL tiene un limite.
La solución seria que una misma pagina mostrara el formulario y lo procesara.
Entonces, tu formulario enviaría los datos a si misma usando el método post, y al principio de esta pagina tu verificas si efectivamente existen datos enviados, haciendo algo como:
Código PHP:
if(!empty($_POST)) {
// aqui proceso el formulario
}
Si no hay datos, entonces simplemente pasas.
Ahora para mostrar los datos ingresados por el usuario, a cada input de tu formulario le asignas el valor que fue enviado mediante el metodo post:
Código PHP:
<input type="text" name="edad" value="<?php echo $_POST['edad']; ?>" />
Encuentro que es la manera mas facil y segura. Otra solucion, seria adaptar lo que tienes actualmente y en la pagina que procesa tu formulario, guardas los datos enviados en variables de sesion, asi, cuando ocurra algun error, redireccionas a la pagina anterior e imprimes esas variables. Despues si el formulario es correcto, eliminas las variables de sesion.