Too long I have struggled with this issue, then finally found it. I felt so stupid, that a simple thing caused me 2 full-days of suffering.
So, when I took a look at the source code of checkout_confirmation.php, I found out that The form (which sends params to paypal) is actually empty! No fields in it. The I digged-in the code, I found (Around line 372), that Form is being opened AND closed right away, after populating form-fields. SO I cut the first part of the form (which creates the form. the second part closes the form) and placed it before the form - fields (around line No 305). That's it! It works fine for me. Here is the first part of the code, which I moved:
<START COPY>
<?php
if (isset($$payment->form_action_url)) {
$form_action_url = $$payment->form_action_url;
} else {
$form_action_url = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');
}
echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');
?>
<END COPY>
If you need more help, contact me through this forum or by email; ironheat at gmail dot com
Good Luck