Taxonomy search/filter with multiple taxonomies and multiple taxonomy terms

The main problem is that, in your $_POST loop, $value is an array, yet you apply htmlspecialchars to it, which will vomit and return back nothing.

If you haven’t done so already, set WP_DEBUG to true in your wp-config.php – developing without it is simply not an option.

Regardless, let’s fix that dirty $_POST loop:

$tax_query = array(); // Don't need relation "AND", it's the default

foreach ( get_object_taxonomies( 'recipe' ) as $tax ) {
    if ( isset( $_POST[ $tax ] ) ) {
        $tax_query[] = array(
            'taxonomy' => $tax,
            'terms' => wp_unslash( ( array ) $_POST[ $tax ] ),
            'field' => 'slug',          
        );
    }
}

$args['tax_query'] = $tax_query;