Currently, the SE engine detects a few situations and suggests actions to the user. For example, I remember that...
- if you upvote an answer on your own question, it suggests to mark this answer as accepted.
- if you downvote an answer, it suggests to explain the reason for downvoting in the comments.
I notice that I often forget to upvote actually good questions. Is my workflow just messed up? When reading a good answer, I intuitively feel the urge to vote it up. However, with questions, I often want to see in what directions the answers are going first.
There's also the effect that sometimes an excellent answer will make me realize that a question was more than just mediocre. Good answers upvalue the question, too.
To the point: my suggestion is that the engine detects client-side if a user has scrolled all the way to the bottom (or 75%?) and stayed on the page for a certain minimum time. It then asks the user if he maybe wants to upvote the question, too. The idea is that if it captured you enough to read the whole page, the question must obviously be quite good.
The counter-argument is probably that it's questionable whether question upvoting needs to be encouraged. If questions are upvoted enough (except by me ;)), then this is probably effort with no benefit.