To make it work as you requested you could try the following code:
$('select').change(function () {
var current = this.value;
$.each($('#FilterContainer').find('div.all').not('.hidden').not('.'+current), function(){
$(this).addClass('hidden');
});
$.each($('.'+current), function () {
$(this).removeClass('hidden');
});
});
And adding the CSS:
.hidden{
display:none;
}
Gives you this working fiddle: http://jsfiddle.net/Q5DpP/5/
HOWEVER:
I don't think this is exactly where you will want to go. Please play with it, and you will understand. If you change the top filter, then the bottom filter everything is okay. But if you then change the top filter again, it will continue to hide... basically, once something is hidden it won't come back. This then becomes a logic puzzle, and the structure of your testing needs to be modified. It only becomes more complex as you go levels deeper.
You may wish to consider adding/removing different classes at each filter level, and then checking on only these filters.