You only need to backup the wallet.dat. If you are using client encryption the private keys are already encrypted. If you aren't you should encrypt the wallet.dat file.
The rest of the files don't need to be backed up but you may wish to in order to avoid downloading the entire blockchain if you need to restore the client.
ADDR.DAT - contains information on your connected peers
BLK0001.DAT - contains the raw blockchain
BLKINDEX.DAT - contains the indexes for blockchain
/DATABASE folder - contains logs (can be safely deleted/truncated)https://en.bitcoin.it/wiki/Data_directory
It is possible to prune the database so it only contains unspent outputs but that hasn't been implemented in the client. That will reduce the size of the database by ~80%. Going forward the size of the database will depend on how many unspent outputs exist.
I also like to se a way to say limit disk space to maximum x GB and limit the downloads and upload rates to 1kbps / 2 kbps. If bitcoin does not scale well on mobile or old computers with limited hard disk space and limited bandwidth I face a problem. In contrast bittorrent clients gives me the option to limit the download an upload bandwidth.
That is not possible. Unlike a torrent you must be synced in realtime with the rest of the network. You can't validate transactons if you are days or weeks behind the rest of the network. For space limited, bandwidth limited, or mobile applications you should consider a lite client like electrum or a web based wallet like blockchain.info