How to show list of posts with custom field value (a date) that are coming soon

Firstly, the_post() doesn’t actually output anything – it just sets up the post data ready to output. You’ll need to do something like this to show the posts:

<?php
while ( $loop->have_posts() ) :
    $loop->the_post();
    the_title();
    the_content();
endwhile;
?>

There’s several more tags you can use and you’ll want to format the HTML around them to display how you want to, let me know if you need guidance on that too.

As for the query, you’ll probably find this very useful: http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

You’re pretty close with the ordering, but to limit your posts returned to anything within the next 7 days you’ll need to use a meta_query. Here’s how you do that:

<?php
$loop = new WP_Query(array(
    'post_type'      => 'client',
    'posts_per_page' => -1,
    'orderby'        => 'meta_value_num',
    'order'          => 'ASC',
    'meta_key'       => 'next_due_date',
    'meta_query'      => array(array(
            'relation'=> 'AND',
            array(
                 'key'     => 'next_due_date',
                 'value'   => date('Y-m-d',strtotime("today")+(7*60*60*24)),
                 'compare' => '<=',
                 'type'    => 'DATE'
            ),
            array(
                 'key'     => 'next_due_date',
                 'value'   => date('Y-m-d',strtotime("today")),
                 'compare' => '>=',
                 'type'    => 'DATE'                     
            )
    ))
));
?>

I haven’t tested this code but I think it’s correct – let me know how you go. The 7 days is defined by the 7*60*60*24 – 60 seconds x 60 minutes x 24 hours x 7 days.

UPDATED as per comments to also filter out posts in the past