How can a light client be certain he got all relevant transactions? With merkle trees, a light client can be sure some transactions he receives are correct with a minimal amount of the blockchain data. How can such a client, though, be sure he received all the relevant transactions from/to his address, in order to know his full balance? What if his peer censured some transactions for some reason?
It can't. However, it is sufficient to request the information from a single honest peer, as the proof does work in the other direction.

This is one of the major drawbacks of using BIP37 for learning about transactions (other downsides include terrible privacy and high load on the servers you're fetching from).

Several proposals exist to improve this, including Committed Bloom Filter and committed adress-indexed UTXO sets. None of them have been implemented, however.