What benefit does a non-mining client provide to the network? I know running a client will help propagate transactions around the network, but I also know a non-mining client will not contribute to the security of the network. Are there any other benefits of running a non-mining client?
A non-mining client will:


Propagate transactions to other peers, including the mining pools.
Propagate peer list, so everyone will have a wide list of peers to connect to.
Propagate the blockchain.
Help decentralise the network by doing all that.


So it essentially takes the burden off the bigger nodes by sharing data. It is especially true for the block information, as it can get quite lengthy.

This is a bit less true for clients working without forwarded ports, as they connect to few nodes, usually some bigger ones that are connected to many peers.