How does a full node without hashing power help the Monero network? What is the contribution made by non-mining full nodes?
A node helps miners know they are on the correct chain, it also helps users verify transactions, nodes also supply the blockchain to other nodes that are not yet up to date, it also acts as a broadcasting service for users when they want a transaction to be sent to all the miners.
The contribution is essentially a validation and broadcast. You can't add new blocks to the chain, but you do verify that things that others are adding to the chain are meeting the consensus rules.
A non mining node helps make partitioning attacks harder. If there are few nodes, an attacker can more easily run sybils and get all connections from new nodes to be to the sybils, and present then a false blockchain that they will not detect (in Monero, like in Bitcoin, you need to be connected to just one honest node to get onto the right blockchain).
If the non mining node is also providing RPC services, then this is a help too, for people who can't, or won't, run their own node (to their detriment, but sometimes circunstances dictate this).
Any node, whether mining or non mining, will tend to strengthen the connectivity of the network as a whole, also making partitioning attacks harder.