How to use custom fields to replace top-level parent title with an image using wp_list_pages?

I went to the #wordpress irc channel and was given the answer by Marko Heijnen. He grabbed the Walker Code from /wp-includes/post-template.php and added a few lines to it.

/**
 * Extend the default page walker class to append class names for pages that
 * are parents.
 * @uses Walker_Page
 *
 * http://wordpress.stackexchange.com/questions/11821/class-parent-for-wp-list-pages
 *
 */ 
class My_Page_Walker extends Walker_Page
{
/**
 * Filter in the classes for parents.
 */
 function _filterClass( $class )
 {
     $class[] = 'parent'; // change this to whatever classe(s) you require
     return $class;
 }

 /**
  * This is effectively a wrapper for the default method, dynamically adding
  * and removing the class filter when the current item has children.
  */
 function start_el( &$output, $page, $depth, $args, $current_page )
 {
     if ( !empty($args['has_children']) )
         add_filter( 'page_css_class', array( &$this, '_filterClass') );

    if ( $depth )
        $indent = str_repeat("\t", $depth);
    else
        $indent="";

    extract($args, EXTR_SKIP);
    $css_class = array('page_item', 'page-item-'.$page->ID);
    if ( !empty($current_page) ) {
        $_current_page = get_page( $current_page );
        _get_post_ancestors($_current_page);
        if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
            $css_class[] = 'current_page_ancestor';
        if ( $page->ID == $current_page )
            $css_class[] = 'current_page_item';
        elseif ( $_current_page && $page->ID == $_current_page->post_parent )
            $css_class[] = 'current_page_parent';
    } elseif ( $page->ID == get_option('page_for_posts') ) {
        $css_class[] = 'current_page_parent';
    }

    $css_class = implode(' ', apply_filters('page_css_class', $css_class, $page));

    $output .= $indent . '<li class="' . $css_class . '"><a href="' . get_permalink($page->ID) . '">' . $link_before;
    $image = get_post_meta($page->ID, 'title_image', true);
    if ( isset($image) && !empty($image) ) {
        $output .= '<img src="'. $image .'" alt="'. apply_filters( 'the_title', $page->post_title, $page->ID ) .'" />';
    }
    else {
        $output .= apply_filters( 'the_title', $page->post_title, $page->ID );
    }
    $output .=  $link_after . '</a>';

    if ( !empty($show_date) ) {
        if ( 'modified' == $show_date )
            $time = $page->post_modified;
        else
            $time = $page->post_date;

        $output .= " " . mysql2date($date_format, $time);
    }


     if ( !empty($args['has_children']) )
         remove_filter( 'page_css_class', array( &$this, '_filterClass') );
 }
}