Something like a SecureID is the solution
Even with Chip&Pin, the credit card system is horribly broken. The non-stored CVV number is a slight attempt to repair the problem, but its still broken.
The cards with a small LCD and keypad are the solution, and are a solution that will work both online and offline with equal effectiveness. There is one element missing, and that is a way for the vendor to communicate to the card, and this can be solved by adding a small photosensor to the card.
For online transactions, you hold the photosensor on the card up to transaction hotspot on the screen for a few seconds, and by displaying an animated/modulated coloured square, so receive the vendor name and transaction amount to your card. The card displays the vendor name and amount, and you enter your PIN to authorise, receiving a one-time use CVV number in return.
For offline use, the vendor ID and amount can be entered using the keypad.
A colour encoded animated GIF, flickering 30 frames per second, with say 4 bits per colour channel, might be able to transmit 360 bits per second. At 60 character vendor name, is around 300 bits, add in 32 bits for the transaction amount, add in another, say, 128 bits for a signature of some kind, and add 25% for error correction, you can transmit the the whole lot in 2 seconds or so. No fancy RF or NFC needed, just a some basic photo diodes and some filters.