De partida, te falta poner el session_start() antes que inicie tu HTML. Luego, he pensado que mejor cambias la forma en que colocas tu navegación, de:
Código PHP:
<a href="?num=<?php print $_SESSION['numpregunta']--; ?>">Pregunta Anterior</a>
<input type="submit" value="Guardar Respuesta" />
<a href="?num=<?php print $_SESSION['numpregunta']++; ?>">Pregunta Siguiente</a>
...a:
Código PHP:
<a href="examen.php?num=<?php print ($_SESSION['numpregunta']-1); ?>">Pregunta Anterior</a>
<input type="submit" value="Guardar Respuesta" />
<a href="examen.php?num=<?php print ($_SESSION['numpregunta']+1); ?>">Pregunta Siguiente</a>
Te faltó colocar el rescate de la variable $num al inicio del script:
Código PHP:
<?php
// abres sesión:
session_start();
// asignas valor a numpregunta, puede ser desde el URL o desde la sesión anterior:
$_SESSION["numpregunta"] = (isset($_GET["num"]) ? $_GET["num"]: isset($_SESSION["numpregunta"]) ? $_SESSION["numpregunta"]: 0);
// con esto preguntas si ha llegado algo por formulario:
if (isset($_POST["resp"]))
{
// acá puedes almacenar, como dices, en sesión las respuestas, ej:
$_SESSION["respuestas"][$_SESSION["numpregunta"]] = $_POST["resp"];
}
// y luego sigue tu código HTML, form, etc.
?>
<html>
Saludos!