I just thought, the problem I mentioned above could be solved without having to backup the keys (in case the addition of a backup feature would represent a security risk).
The bitcoincard could generate a "time locked" transaction (nLockTime) to an address in control of the owner. Say, 6 months in the future. If the owner remains in control of the money, before the deadline he can revert the transaction to himself, and send a new time locked one. If the card is lost/destroyed/stolen, and supposing it requires a code for spending, then the owner only have to wait for the time locked transaction to unlock.
Well the blockchain doesn't work that way. It would be useful but only for cold storage.
Remember the blockchain doesn't use "account/address balances" that is merely an abstraction for the end user. All tx inputs are unspent prior tx outputs (except coinbase txs).
An example might help:
Say you have a wallet w/ single address abc with value of 100 BTC. It comes from a single unspent tx (A).
from blah 100 BTC to Address abc <- unspent output A.
Your wallet "knows" it is worth 100 BTC because it scans for all unspent outputs sent to Addresses it has private keys for (in this case only this one unspent output A for address 123).
Now you could create an nLockTime tx
Input: unspent output A
Output: Recovery Address
Options: nLockTime (~ 6 months - nLockTime is in blocks)
The problem is as soon as you spent a single cent from this wallet. "Unpsent" tx A becomes spent tx A and the "recovery" tx becomes invalid.
On edit:WAIT WAIT WAIT
I think it could work IF the wallet regenerates the "recovery tx" (nLockTime) after every spend. This would be a pretty cool concept even for "normal" wallets.
Example:
Wallet has unspent output A.
Wallet makes recovery tx (nLockTime) using outputA and publishes to network.
User spends some coins using output A, creating unspent output B (change)
Wallet makes recovery tx (nLockTime) using outputB.
Wallet broadcasts both to network simultaneously.
User spends some coins using output B, creating unspent output C (change)
Wallet makes recovery tx (nLockTime) using outputC.
Wallet broadcasts both to network simultaneously.
User receives coins (a new unspent output D)
Wallets makes a recovery tx (nLockTime) using unspent output D.
Wallet broadcasts new recovery tx as soon as it receives "unprotected" coins.