You can't send bitcoins without having detailed info about the transactions that sent them to you. The network works with transactions, not address balances. When you move BTC, you don't say, "I have access to this account, so check my balance and let me send the appropriate amount of BTC." You say, "I can prove that I received this transaction. I will redeem the BTC in it and disperse it in this way."
The intermediate solution is to download only headers for blocks that you
know have no transactions to you. It should take only a few minutes for Bitcoin to get set up on its first run after this change. But you still need to download all of the future full blocks or you will miss transactions to yourself.
The long-term solution is to create some out-of-band way of discovering transactions to yourself. This could take the form of:
- An additional P2P overlay network that allows anyone to search for transactions to certain addresses and retrieve them with high reliability.
- Data sent directly from the sender to the recipient over the network or with a file. Additional extensions for retrieving Merkle branches would be necessary if both sender and recipient don't download full blocks.
- Centralized services like my
http://blockexplorer.com/q/mytransactions page can be used to get all of the required data without downloading any blocks.
I find the sender-to-recipient method to be especially elegant. It makes intuitive sense that the sender of a transaction needs to give data to the recipient; some people are surprised that the current network doesn't require this. Merkle branches are only a few extra kB of data on top of the block headers, and they can be safely provided by centralized sources because they can't be falsified.