Почему вы не используете optgroup?
<select id="food" name="food">
<optgroup label="Fruits">
<option value="1">Apples</option>
<option value="3">Bananas</option>
<option value="4">Peaches</option>
<option value="5">...</option>
</optgroup>
<optgroup label="Vegetables">
<option value="2">Carrots</option>
<option value="6">Cucumbers</option>
<option value="7">...</option>
</optgroup>
<optgroup label="Baked Goods">
<option value="8">Apple Pie</option>
<option value="9">Chocolate Cake</option>
<option value="10">...</option>
</optgroup>
Скрипка здесь (чтобы посмотреть, как это выглядит): http://jsfiddle.net/rn39c/
Я думаю, это может быть то, что вы ищете, потому что категории - это просто метка, а подкатегории - это опция (со значением, которое отправляется на сервер)
РЕДАКТИРОВАТЬ - Затем вы можете добавить к смеси w некоторые jQuery (это очень просто, но работает: вы можете попытаться улучшить его):
$('#food option').hide();
$('optgroup').hover(function(){
$(this).children('option').show();
}, function(){
$(this).children('option').hide();
});
скрипка здесь: http://jsfiddle.net/rn39c/1/