Commerce Node Checkout free option skip cart/checkout/payment
You can write a custom module that implements hook_node_submit() and that sets

$form_state['values']['commerce_node_checkout_skip'] = True;


if the free version is selected.