Not the typical order by posts by date question

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>';
    }
}