Additional form options based on category selected not working

To do what you are trying to do, you need to use add_query_arg() and get_query_var(), and then use your query arg/value to modify the query.

I’ll give you an example of how I create similar “filters” in one custom Theme; you’ll need to modify it slightly to conform to your form-field markup rather than using merely an anchor, like I do.

First, you need to add your query arg, like so:

<a href="https://wordpress.stackexchange.com/questions/63374/<?php echo add_query_arg( array("cat_filter' => 'some-cat' ) ); ?>">Some Cat</a>

This link essentially reloads the current page, with cat_filter=some-cat appended to the URL query string.

Second, you need to determine if your query arg has been set:

global $wp_query;
$cat_filter = ( isset( $wp_query->query_vars['cat_filter'] ) ? $wp_query->query_vars['cat_filter'] : false );

(Note: you’ll want to do some sanitization here, for data security.)

If you were working with a custom query via WP_Query, you could do this check directly in the template, and then add the result to your custom query arguments array. But, if you’re working with the main loop query, you’ll want to wrap this inside a callback to filter pre_get_posts:

function wpse63374_filter_pre_get_posts( $query ) {
    if ( ! is_main_query() ) {
        return $query;
    } else {
        if ( isset( $query->query_vars['cat_filter'] )  ) {
            // Don't forget to add sanitization!
            $query->set( 'category_name', $query->query_vars['cat_filter'] );
        }
        return $query;
    }
}
add_filter( 'pre_get_posts', 'wpse63374_filter_pre_get_posts' );

If you want to clear the filter, you can use remove_query_arg().