I was experiencing the same issue. In my case it turned out to be a bug with the logging mechanism that prints the error message for the user.
Here's how to reproduce this particular error:
1) Navigate to the VirtueMart Administration Configuration screen : http://<yourdomain>/administrator/index.php?page=admin.show_cfg&option=com_virtuemart
2) Scroll to the bottom and make sure "Debug" is not checked BUT "Limit by IP address" is checked and put a bogus IP in the "Client IP address" field, such as 18.104.22.168.
3) Apply changes
4) Attempt to make a payment using an invalid Credit Card, the screen should refresh and there will not be an error message.
Basically, if "Limit by IP address" is enabled and your IP doesn't match the one in the "Client IP address" field then the logger will throw out all messages.
To fix this open /administrator/components/com_virtuemart/classes/Log/display.php and change this line (119 on my system):
if((VM_DEBUG_IP_ENABLED == '1') && (strcmp($_SERVER['REMOTE_ADDR'], VM_DEBUG_IP_ADDRESS) != 0))
if((VM_DEBUG_IP_ENABLED == '1') && (strcmp($_SERVER['REMOTE_ADDR'], VM_DEBUG_IP_ADDRESS) != 0) && $priority == PEAR_LOG_DEBUG)