If I set up a filter to receive changes, I only seem to receive transactions for addresses that are contract addresses.
How to put a filter to receive transactions that are sent to an address that is non-contract?
You're using the topic filter API, which filters for events emitted by contracts; naturally, only contracts are going to show up in that.
Instead, you need to define a block filter and iterate over each transaction in the returned block, looking for transactions that target the desired account. Note that this won't catch all value transfers - see this answer for why.