Suppose someone has asked twenty questions, but has accepted no answer on any of them. Is there not a strong case for preventing this person from asking any more questions?... What are your thoughts on this?
To first order, I think questions should be considered on their merit, to "play the ball not the man". If it's a good question, upvote it, and if you can, answer it.
Having said that, one of the main reasons I am engaged on SE sites is because they are interactive: I can get feedback on what I've done well or badly, and I can likewise give feedback by voting, adding comments, etc. So I find it quite unsatisfying if I answer a question and receive no feedback whatsoever. And I'm not ashamed to say that I value accepts or "thanks" -- in my professional life I get a great deal of satisfaction from satisfying customers and more generally helping people learn, and it's not much different online.
Moreover, this is a community and if someone deliberately violates community norms, whether it's being rude to other users, posting spam, or knowingly refusing to engage in voting, accepting answers or the common politeness of saying "thanks for the effort", then I'm likely to put in less effort to help them.
I'll quite happily prompt newer users to accept or vote if they haven't been, with text like the following
hi @user123456, as a relatively new user you might not realize that you can comment, upvote, or even accept answers to your questions. You've asked 4 questions and got 5 answers and the site works better when there's feedback from the person who asks the question. Please see meta.stackoverflow.com/a/5235/165400 for more information. (When you have more reputation you will be able to downvote as well.)
I've done this a few times on mine and other people's answers. And I've been pleasantly surprised -- the first time the user concerned replied to say they didn't realize, went back over all their questions and upvoted and accepted answers to most of them.
But your question is really about the longer-term user who refuses to engage in accepting. I have no problem about leaving a comment for such users if I come across them, along the lines of
hi @user7890ab, did you realize that you can comment, upvote (when you have 15 reputation), or even accept answers to your questions? You've asked 10 questions and got 11 answers and the site works better when there's feedback from the person who asks the question. Please see meta.stackoverflow.com/a/5235/165400 for more information. (When you have more reputation you will be able to downvote as well.)
However so far it hasn't had any affect when I've tried it! I think it's reasonable to give such feedback, however, as eventually it might encourage such users to engage. For this class of user, I would certainly tone down the amount of effort I put into answering their questions, all other things being equal. If you want to see users' accept rates, the User Accept Stack App will provide the statistic for you.
So, to summarize, do I think any additional mechanisms are necessary? No, I don't, but I think it is reasonable to give feedback within the mechanisms that already exist on the site. And, perhaps most importantly, everyone on the site needs to figure out how much effort they want to spend answering questions, in view of their own personal cost / benefit system, and then apply that as best they can.