You will need jQuery to make this work but it shouldn't be too complicated. Basically the exposed filter acts as the degraded (non-javascript) version as well as giving you all the possible category options.
$('.views-exposed-form .views-submit-button input').hide();
$('.views-exposed-form select').change(function(event) {
// Clear previous highlights
$('.highlight').removeClass('highlight');
// Get the selected category
var selectedCategory = $(this).find('option:selected').text();
// Use the category name to find items on the page
$('.views-field-term-node-tid .field-content a:contains(' + selectedCategory + ')').parents('.views-row').addClass('highlight');
});
I made this example with a view with fields and the "Content: All taxonomy terms (All taxonomy terms)" field limited by taxonomy. If you use a different method of creating the view you will want to change .views-field-term-node-tid .field-content and probably also the .parents('.views-row') which is what gets highlighted.
You'll also probably want an additional selector in front of all the .views-exposed-form selectors in case you add more exposed forms to you sight such as $('.my-view .views-exposed-form')...
I also made this to trigger on the select change, but you could do it when clicking the Apply button (which you would obviously not want to hide then).
If you exposed filter is a multiple select you can add an each() to the end of $(this).find('option:selected') and loop through getting the text and setting the highlight.
theme_select()
on your categories and some jQuery listening and.addClass()
ing, you could easily craft together a little block to do what you want.