Trying to display posts by authors in with specific user meta

$args is a variable and as such should not be wrapped in quotes in the arguments array of query_posts(). Now that should be what’s causing the whole thing to fail.

That being said, there are a few more flaws I see in your code:

  • I’d recommend using the WP_Query class instead of query_posts() (why is that?)
  • While it works, I’d not use $args as a variable name unless it’s actually all the arguments to a wp function. Just to stick to consistent syntax.
  • Why are you calling global $query_string; if you’re not using it in the query itsself?

You’re good till the foreach loop has finished. The whole thing should look something like this:

$your_user_search = new WP_User_Query( array(
    'meta_key' => 'state' , 
    'meta_value' => 'NM'
    ));
$listers = $your_user_search->get_results();
$lister_ids = array();
foreach($listers as $lister) {
    $lister_ids[] = $lister->ID;
}
// query arguments
$authors = implode(',', $lister_ids);
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post_type' => 'listing',
    'author' => $authors,
    'posts_per_page' => 10,
    'paged' => $paged
);
// query for posts
$your_query = new WP_Query( $args );
// loop through found posts
while ( $your_query->have_posts() ) : $your_query->the_post();
    // inside of loop, echo markup and post content here
endwhile;
// pagination, with check for WP-PageNavi plugin
if ( function_exists('wp_pagenavi') ) {
    wp_pagenavi( array( 'query' => $your_query ) );
} elseif ( get_next_posts_link() || get_previous_posts_link() ) {
    // optional: echo markup around links
    next_posts_link( '« Older Entries', $your_query->max_num_pages );
    previous_posts_link( 'Newer Entries »' );
}
wp_reset_postdata(); // reset post data, important!