OK this is a nice hack. But there is a little problem if you have free shiping set.
When you set free shipping and order will reach this price there will be no option to choose in step 3 / payment method.
So this hack is little bit useless for me

pitty
Is there a way to make it work with free shipping?
Thanks
--------
I've solved this issue for myself and since I am no programmer I don't know if this solution will be functional for all others.
But here it is.
I found out that value of "shipping_rate_id" for free shipping is "1" so I just added new rows in table "jos_vm_shipping_rate_payment_method_xref" and linked "shipping_rate_id" and "payment_method_id" manualy by running this query.
INSERT INTO `database_name`.`prefix_shipping_rate_payment_method_xref` (`shipping_rate_payment_method_id`, `shipping_rate_id`, `payment_method_id`) VALUES (NULL, '1', '2');
INSERT INTO `database_name`.`prefix_shipping_rate_payment_method_xref` (`shipping_rate_payment_method_id`, `shipping_rate_id`, `payment_method_id`) VALUES (NULL, '1', '4');
INSERT INTO `database_name`.`prefix_shipping_rate_payment_method_xref` (`shipping_rate_payment_method_id`, `shipping_rate_id`, `payment_method_id`) VALUES (NULL, '1', '18');
Of course it can be done by adding rows manually in phpMyadmin for example.
I have to point out that your ID for "payment_method_id" will be different from my IDs 2,4,18 you have to find it . And "shipping_rate_id" for free shipping can be different than "1". You can find out your "free_shipping_id" in debug mode.
Hope it helps someone.