Pues deberas revisar bien. Yo he minimizado tu codigo y lo he probado en mi maquina, y funciona. Descarto que el error este en el procesamiento del form login porque me acabas decir que eso lo hace bien... y lo siguiente, a mi me funciona. Esta es la prueba que yo hice. login.php lo deje igual.
 
admin_acceso.php 
 Código PHP:
    <?
if($_POST["usuario"] == "admin" && $_POST["passw"] == "admin")
{
    session_start();
    $_SESSION["login"]="correcto";
    header('Location: admin.php?modulo=panel_de_control'); 
}else{
       echo "Algo funciona mal en el login";
}
?>    
  control.php 
 Código PHP:
    <?php
session_start();
if ($_SESSION["login"] != "correcto") 
{
 echo "La variable de session vale " . $_SESSION["login"] . " y algo anda mal";
exit();
}else{
echo "La variable de session vale " . $_SESSION["login"] . "<br>";
}
?>    
  admin.php 
 Código PHP:
    <?php
include('control.php');
//session_destroy(); Solamente para borrar la sesion y volver a probar.
echo "El modulo que se debe cargar es " . $_GET["modulo"];
?>    
  
Esta es mas o menos la idea que te di para el login, pero en funcionamiento. Entras por login.php, (admin:admin) y terminas en admin.php con un cartelito que indica que modulo debe cargarse. 
Si esto no te funciona no estaria de mas que hagas un  
<? echo phpinfo(); ?> 
 y revises el apartado sessiones, Session Support  debe estar en enabled. 
Saludos.