Guarda, ho trovato questo scriptino, l'ho modificato un pochino per renderlo + semplice possibile.
L'unica cosa che dovresti fare è, mi è sembrato di capire che usi ASP, non lo completo perchè utilizzo coldfusion e sarebbe diverso,ma dovresti lavorare con le liste.Questo è il codice:

<script language="JavaScript">
var option_array = new Array('');

option_array[1] = new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
option_array[2] = new Array("-- Seconda sel --","CNN","ABC News");
option_array[3] = new Array("-- terza sel --","Google","Ask Jeeves");

function switch_select()

{
for (loop = window.document.form_1.select_2.options.length-1; loop > 0; loop--)
{
window.document.form_1.select_2.options[loop] = null;
}

for (loop = 0; loop < option_array[window.document.form_1.select_1.selectedIndex].length; loop++)
{
window.document.form_1.select_2.options[loop] = new Option(option_array[window.document.form_1.select_1.selectedIndex][loop]);
}

window.document.form_1.select_2.selectedIndex = 0;
}

</script>

<form name="form_1" onSubmit="return false;">
<select name="select_1" onChange="switch_select()">
<option>-- Categoria --</option>
<option>Prima sel</option>
<option>Seconda sel</option>
<option>Terza sel</option>
</select>
<select name="select_2">
<option>Selezionare sottocategoria</option>
</select>
</form>


Dovresti inizialmente creare delle liste per rendere dinamiche le sottocategorie:

da cosi:
new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
a:
("-- Prima sel --","<%lista uno%>")
ecc..

e poi fare un loop per questo. da cosi:

option_array[1] = new Array("-- Prima sel --","JavaScript Kit","News.com","Wired");
option_array[2] = new Array("-- Seconda sel --","CNN","ABC News");
option_array[3] = new Array("-- terza sel --","Google","Ask Jeeves");

a:
<loop da 1 N_liste>

option_array[<%Numero%>] = new Array("-- Prima sel --","<%lista uno%>")
</loop>

Spero di essere stato chiaro....

Qualsiasi problema sono qui.

Penso sia l'unico modo per renderlo dinamico.

Ciao David