A 51% attack endeavors to create blocks without including valid transactions, right? Either that, or to give us blocks full of spam.
I believe the client should have a means to resubmit an unconfirmed transaction to the network with a transaction fee, or a higher transaction fee, with the network accepting the new transaction as replacing the old one. This would allow anyone whose transaction doesn't stand out from the spam - or which miners don't seem to want to touch - to get their transaction reprioritized.
With that, any logic added to the client code that ignored blocks that clearly appear to avoid containing valid highest-priority transactions more than a minute or two old would ignore the very blocks an attacker would create. That could very simply make a 51% attack far less disruptive. A 51% attack might do little more than exert upward pressure on transaction fees for those who want their transactions confirmed, rather than cripple the network.
Anyone care to refute this crazy thought?
51% attack is 100% control of network. You can do a lot more than just delay transactions.
For example I buy 100,000 BTC coins from you. 51% and replace that transaction with one where I sent those coins to another address I control. You see 100,000 coins disappear from your wallet.
Your new transaction would be unconfirmed. The transaction can be resent and your attack would be rejected. You can make another 51% attack, but the odds of being successful depend on variance.