This is on purpose, though there has been discussion in the past about truncating the blockchain. I don't think it will happen.
There are other ways, like a hybrid client/server model.
Bitcoin Spinner, the Android app I use for my active wallet, uses a method like this.
BCCAPI is one implementation of this, and there is another open-source alternative whose name escapes me at the moment.
Basically, this architecture allows a server to manage the Bitcoin blockchain. The user's public key is handed to the server, which then responds with balance and pending transaction information.
To send money, the client requests a new transaction from the server. The server sends it to the client, the client signs it with it's private key, and the signed transaction is sent back to the server for network inclusion.
It's fast, secure, and does not require the client to download the whole blocks. Desktop clients are possible, though I've not seen one. Perhaps one day, one could make money by hosting a relay server in exchange for a modest monthly fee.