A feature for personal messaging between users has been declined earlier. One reason is, that communication should be publicly visible, and the community should be able to moderate, which is also spam protection.
So you could post a public comment thanking the user. You can delete it later, keeping the site tidy.
Indeed, not everything can be upvoted, so there's work which isn't be rewarded by reputation. We know that score doesn't tell everything. In some cases, rare badges show who did much work such as edits.
If I noticed, that a user makes good contributions such as editing posts and wikis, I have a look at his user profile page and browse through his answers and questions. When I see good contributions there, I can vote up and I do it. So there's a way you can thank a helpful user: read his or her contributions and vote to it, which you otherwise would perhaps have overlooked if the user didn't draw your attention because of his improvements.
Furthermore, you could directly return the favour: if you notice a good answer by that user which could be improved, just do it, directly or via edit suggestion feature. So his or her answer gets better and could earn upvotes. Same for questions: a bit unclear question could be made a great question or even a canonical one.
Links for the background: