un approccio basilare per capire la logica...


codice:
<?php
$loc['r'] = $_POST['regione'];
$loc['p'] = $_POST['provincia'];
$loc['c'] = $_POST['comune'];
?>
...


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<select name="regione">
    <?php 
        // cicli sulle regioni e se loc['r'] != '' allora metti l'opzione a selected
    ?>
</select>

<?php if ($loc['r'] != '') { ?>

   <select name="provincia">
      <?php 
         // cicli sulle province nel DB WHERE regione = loc['r'] e
            se loc['p'] != '' metti l'opzione a selected
      ?>
   </select>

   <?php if ($loc['p'] != '') { ?>

      <select name="comune">
         <?php 
            // cicli sui comuni nel DB WHERE regione = loc['r'] AND provincia = loc['p']
               e se loc['c'] != '' allora metti l'opzione a selected
         ?>
       </select>

   <?php } // fine if ($loc['p'] != '')  ?>
<?php } // fine if ($loc['r'] != '')  ?>

</form>