After having no PayPal payments for numerous days I decided to test my setup. It failed.
An hour and a half later, I have the solution which PayPal don't seem to offer any help with. By examining their code you need to do the following:
1) Change the URL from ...paypal.com/xclick/ to ...paypal.com/cgi-bin/webscr
2) Add a hidden new input called 'cmd' with the value '_xclick'
<input type="hidden" name="cmd" value="_xclick">
3) Test!
Notice the xclick in the URL and the form parameter... the hidden value has an underscore before it. Also if yours says something other than xclick, try what was in the URL to the new hidden value with the underscore in front.
PayPal do not give out helpful messages. Check the URL of any error page and you may have LACK_OF_BASIC_PARAMS in the URL. This could be the cause.