Allora provo a postarti un pò di pseudocodice in modo da trovare la soluzione, non ho tempo per il codice e poi se ti posto tutto non impari nulla.
Personalmente queste cose le sviluppo in AJAX ma se dovessi farlo con Javascript farei in questo modo
codice:
<html>
<body>
........
<form name="form" action="submit.php" method="post">
<select name="valore" onchange"window.location=('form.php?valore='+this.options[this.selectedIndex].value)">
<?php
//Controllo con la funzione isset se il valore è definito o meno
//if
se è definito metto questo valore come selected
//else
altrimenti seleziono tutti
?>
<select name="sottovalore">
<?php
//Controllo con la funzione isset se il valore è definito o meno
//if
se è definito metto eseguo una sotto query che filtra i risultati mostrando solo le
sottocategorie attinenti
//else
altrimenti seleziono tutti
?>
</select>
</form>
..........
</body>
</html>
La butto li, se qualcun'altro ha soluzioni migliori ben venga.