por que esto NO ES LOGICO:
while($r = mysql_fetch_assoc($preguntas))
Como le vas a hacer un FETCH_ASSOC a $preguntas si el resultado del query lo guardas en $result ?
mysql_fetch_assoc se usa para manejar los resultados que entrega MySql entonces no encuentro lógico que hagas un ASSOC a $preguntas cuando debería ser a $result...
No te parece ?
Ademas no debes usar
SESSION_REGISTER ya que muy clarito lo dice el manual de PHP:
Código PHP:
Ver originalEsta función ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Entonces solo necesitas
$_SESSION['unNombre'] = $array_de_preguntas; y con eso es mas que suficiente para que tu variable de sesión quede declarada sin ningún problema.
Espero que esto te de un norte para lo que quieres hacer.