Pues deveria de funcionarte, yo pienso que se te esta pasando el
<form name="navegador".. y aunque cambies el nombre de la funcion ps vas a tener comflictos al igual con tu ID de tu select...
te modifique un poco tu funcion y prueba un html tal cual te pongo el codigo..
Código PHP:
<form method="post" action="">
<select id="s1" onchange="destino(this);">
<option>Todas</option>
<option value="index.php?id=1">sub categoria 1</option>
<option value="index.php?id=2">sub categoria 2</option>
</select>
</form>
<form>
<select id="s2" onchange="destino(this);">
<option>Todas</option>
<option value="index.php?id=3">sub categoria 3</option>
<option value="index.php?id=4">sub categoria 4</option>
</select>
</form>
<script language="javascript">
function destino(the){
the = the.options[the.selectedIndex].value;
parent.location = the
}
</script>
Como te puedes dar cuenta elimine el identificador del FORM pá tener menos conflictos, lo unico que cambiaremos al hacer un menu desplegable nuevo ps es el ID de ese select, tonces al ejecutar un onchangue mandamos por medio de "this" el identificador del select y lo tratamos para optener su value y su redireccion..
de esta forma puedes crear los desplegables que quieras nomas cambias el ID de ese select..

saludos !