Just don't re-use addresses. Bitcoin does not expose your public key until you spend from it.
Are you sure, what about when someone sends to it?
If the sender wanted to send you a private message, they would need your public key, but that's not what transactions do.