This is a feature request, and also a BIP, but curious to hear feedback at this stage.
To summarise, if for some reason, a user is using an old version of their wallet.dat, and without realising they make a transaction which tries to use coins already spent, currently the client doesn't alert the user of what they have done, they will simply (as I understand it) see that the transaction takes forever to confirm. (please correct me if I am incorrect).
My suggestion is that when a node sees such invalid transactions, rather than simply ignore them, it sends a message back to the originating node to let them know it was invalid. This should only be necessary in situations where the transaction creating node isn't up to date on the block chain, otherwise the originating wallet should presumeably already alert the user, or ideally, have corrected their balance before they even tried to spend the coins. (A -rescan, IMHO, should do this, but, in my experience, it doesn't).
edit@laanwj: clarified title