It's a bad idea because:
1) It's impossible, since Bitcoin don't have "balances", only transactions. An address balance is simply a derived figure calculated by adding up all the transactions going into it and subtracting the transactions going out; this figure is not actually "stored" in the blockchain anwhere. More importantly, because a transaction input must be the output of a previous transaction, knowing an address balance is useless if you don't know exactly which transactions the money came from.
2) The idea of stealing money that hasn't been moved in a while is not
going be accepted by users. This is one of the key reasons why I'm using Bitcoin in the first place: my bank actually froze one of my accounts once because I "hadn't used it in a while" without even telling me
, causing major frustration the day I actually did
try to use it.
But at least they held on to my money and (eventually) gave it back to me instead of stealing it outright
. If anything even remotely like this is ever implemented in Bitcoin (not that that's likely to happen), then I (and probably most other users) will take my money elsewhere.
3) Finally, and most importantly, we already have something like this: Merkle tree pruning, which involves removing transactions that have totally spent outputs. All we need is a client that actually implements this. There's no need to make any changes to the protocol.