Good topic. Let me share with you my method. Virtuemart 2 has solution already

but you need to modify it a bit. So here is what you need:
4 php files from components/com_virtuemart/views/cart/tmpl
default.php
default_pricelist.php
select_payment.php
select_shipment.php
1 file from components/com_virtuemart/views/user/tmpl
edit_address.php
Copy them to templates/[your_template]/html/com_virtuemart/cart
And now lets start. File "default.php" shows shopping cart at start and at the end of ordering process. So find this lines:
<?php if (VmConfig::get ('oncheckout_show_steps', 1) && $this->checkout_task === 'confirm') {
vmdebug ('checkout_task', $this->checkout_task);
echo '<div class="checkoutStep" id="checkoutStep4">' . JText::_ ('COM_VIRTUEMART_USER_FORM_CART_STEP4') . '</div>';
} ?>
Should be around 90 line.
As you can see it displays "checkoutStep4" that contains info about last, 4th step of order. Now lets change it a bit:
<?php if (VmConfig::get ('oncheckout_show_steps', 1) && $this->checkout_task === 'confirm') {
vmdebug ('checkout_task', $this->checkout_task);
echo 'Here is step 4 so add html code with steps in div's with images that should be displayed on the end';
} else {
echo 'Here is step 1 so add html code with steps in div's with images that should be displayed on the beginning';
}
?>
You can add whatever you want and style it in your css.
Next thing is to handle 2nd step. In my case it's login/registration page.
We need to edit edit_address.php file. Copy it to templates/[your_template]/html/com_virtuemart/user.
In this file look for line:
<h1><?php echo $this->page_title ?></h1>
Now ad after it (or in any other suitable for you) place;
<?php if (empty($this->cart->BT)){ ?>
Here is step 2 so add html code with steps in div's with images that should be displayed on the 2nd step
<?php }?>
I used in this case PRO's solution - thanks!
Ok, now you need to modify select_shipment.php
Look for this code:
if (VmConfig::get('oncheckout_show_steps', 1)) {
echo '<div class="checkoutStep" id="checkoutStep2">' . JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP2') . '</div>';
}
And modify it to
if (VmConfig::get('oncheckout_show_steps', 1)) {
echo 'Here is step 3 so add html code with steps in div's with images that should be displayed on the 3nd step';
}
Now modify file select_payment.php in this line:
if (VmConfig::get('oncheckout_show_steps', 1)) {
echo '<div class="checkoutStep" id="checkoutStep3">' . JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP3') . '</div>';
}
Change it to:
if (VmConfig::get('oncheckout_show_steps', 1)) {
echo 'Here is step 3 so add html code with steps in div's with images that should be displayed on the 3nd step';
}
My 5th step is confirmation of an order so we return to file default.php and apply changes just as I mentioned on beginning.
With bit of css styling it can look like mine:





Life example is here:
http://kamizelkiodblaskowe.com.pl/koszyk.html (Shop is only in Polish, sorry

)
I attach my php files, icons and css style. I'm sure that you can do it much better than I

All you need is individual styling in css. I hope that I helped a bit

[attachment cleanup by admin]