Well, you still have to order the posts by your date key, but as far as output, the general idea is to store the current month in a variable and check it against the date of each post, and only output it when it changes. A pseudo-code example:
$current_month="";
while( have_posts() ){
the_post();
$this_month = get_post_meta( get_the_ID(), 'your_date_key', true );
if( $this_month != $current_month ){
$current_month = $this_month;
echo '<h2>' . $current_month . '</h2>';
}
}