Show post with thumbnails only

You need to define your arguments before passing to WP_Query. Also, you may use
meta_query to acheive what you are looking for.

Here is some documentation to help you with your futur developments.

WP_Query

Link to the documentation
Show posts associated with a certain custom field.

This part of the query is parsed by WP_Meta_Query, so check the docs for it as well in case this list of arguments isn’t up to date.

WP_Meta_Query

Link to the documentation
Used for generating SQL clauses that filter a primary query according to metadata keys and values. Filter their results by object metadata, by generating JOIN and WHERE subclauses to be attached to the primary SQL query string.

So the goal is to find the metadata key you want to find. To do so, you can go in your database and look for your meta_key in the table named wp_postmeta.

In this case, we would search for _thumbnail_id in our table.

SELECT * FROM wp_postmeta WHERE meta_key LIKE '_thumbnail_id';

Once you found the meta_key you want to work with, just build your array.

Here is the final code

<?php 
// WP_Query arguments
$args = array(

    // Your default arguments
    'posts_per_page' => 10,
    'orderby' => 'post_date',
    'order' => 'DESC'
    // ...

    // This is the part where you need to work with WP_Meta_Query
    'meta_query' => array(
        'key' => '_thumbnail_id'
    )
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {

    while ( $query->have_posts() ) {

        $query->the_post();

        // Display your post information
    }

} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();
?>