Lo que yo hago en ese caso es tener un select por cada categoría, con sus subcategorías correspondientes.
Con CSS oculto estos select de subcategorías y con JQuery detecto la elección de una opción en el select principal y en base a eso muestro y oculto los demás select.
Algo así:
Código Javascript
:
Ver original$('select[name="tu_campo"]').change(function(){
var id_categoria = $(this).val();
$('select.subcategorias').hide();
$('select[name="subcategorias-'+id_categoria+'"]').show();
});
Espero haber ayudado!