No entiendo bien algunas cosas:
1ro: Para levantar al procesar el select falta el:
$materias = $_REQUEST['materias'];
2do Los options no tienen valor... y deberias guardar en la base por el id de la materia y no el nombre ...algo asi
<option value='$row['idmateria']'>$row['nombremat'] </option>
si igual queres guardar por el nombre, al menos pone
<option value='$row['nombremat']'>$row['nombremat'] </option>
3ro. Imagino que son varios selects iguales (digo porq pusiste un array) porq puede elegir varias materias... en tal caso en el procesar deberia ser algo asi:
(ES VALUES NO VALUE) EL insert dentro del for , sino inserta un solo valor (tenes varias maneras , podes concatenar todas la consulta o insertarlas una a una..)
Código PHP:
$materias = $_REQUEST['materias'];
$n= count($materia);
for ($i=0; $i<$n; $i++){
$materiax= "$materias[$i]";
$consulta = "INSERT INTO inscripciones(dni, nombre, nombre_materia) VALUES ('".$dni."','".$nombre."','".$materiax."')";
$resultado = mysql_query($consulta, $conexion);
}
Insisto q deberias guardar el id nada más pero depende de vos.
Saludos