Upcoming events

The problem seems to be the comparison. WordPress compares the post meta using SQL, so you have to use its syntax.

Try setting:

<?php $today = date("Y-m-d H:i:s"); ?>

Which will return something like 2017-12-1 12:12:12

In your post meta make sure to use the same syntax. You can set dates in various formats, this is the SQL default.

I would suggest using Advanced Custom Fields, or setring your own metaboxes to avoid typos and future headaches.

Here is a snippet of code from a project I worked with that dealt with exactly that. The date field was set in the admin using ACF;

$today= date('Ymd');  // ACF formatting
$args = array (
    'cat' => '3',
    'meta_query' => array(
         array(
                'key'       => 'event_date',
                'compare'   => '>=',
                'value'     => $today,
        )
    ),
);