You can override the theme function uc_cart_review_table to accomplish this.
function YOUR_THEME_uc_cart_review_table($variables) {
$items = $variables['items'];
$show_subtotal = $variables['show_subtotal'];
$subtotal = 0;
// Set up table header.
$header = array(
array('data' => theme('uc_qty_label'), 'class' => array('qty')),
array('data' => t('Products'), 'class' => array('products'), 'colspan' => 2),
array('data' => t('Price'), 'class' => array('price')),
);
// Set up table rows.
$display_items = uc_order_product_view_multiple($items);
if (!empty($display_items['uc_order_product'])) {
foreach (element_children($display_items['uc_order_product']) as $key) {
$display_item = $display_items['uc_order_product'][$key];
$image = uc_product_get_picture($display_item['#entity']->nid, 'uc_cart');
$subtotal += $display_item['total']['#price'];
$rows[] = array(
array('data' => $display_item['qty'], 'class' => array('qty')),
array('data' => $image, 'class' => array('image')),
array('data' => $display_item['product'], 'class' => array('products')),
array('data' => $display_item['total'], 'class' => array('price')),
);
}
}
// Add the subtotal as the final row.
if ($show_subtotal) {
$rows[] = array(
'data' => array(
// One cell
array(
'data' => array(
'#theme' => 'uc_price',
'#prefix' => '<span id="subtotal-title">' . t('Subtotal:') . '</span> ',
'#price' => $subtotal,
),
// Cell attributes
'colspan' => 4,
'class' => array('subtotal'),
),
),
// Row attributes
'class' => array('subtotal'),
);
}
return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('cart-review')), 'sticky' => FALSE));
}
With the code $image = uc_product_get_picture($display_item['#entity']->nid, 'uc_cart');
you can read out the product image and add it to the table.