There are error messages that you can show on the page that come from the gateway. If you are using Authorize.NET then you can expand the bindings and drag the 'Response Reason Text' onto the page where you would like to see this.
For the PayPal Direct Payment you would put in one of these onto the page:
<?php echo(PP_DirectPayment_Result("Short Error Message")) ?>
<?php echo(PP_DirectPayment_Result("Long Error Message")) ?>
Alternatively you can use the error codes to create your own custom error messages. You could have a switch statement on the page that evaluates the error code, then displays a particular message about the error. If you want to go this route you will need to obtain developer guide for your gateway and checkout the error codes and corresponding messages.