If we're talking specifically about SE, I feel that the current system works well. There are a number of deterrents to downvoting lightly:
- You need a significant amount of rep to down-vote - nearly 10 times the amount of rep required to up-vote. This eliminates the casual, unafiliated voters, and the mischief-makers
- Down-voting costs the voter rep (granted, it's a token amount, and one could argue for a greater amount), but there is another deterrent
In other SE's I've noticed that it is common etiquette to provide the reason why you're down-voting someone. I like this emergent behaviour: it's not strictly enforced by the system, but the community expects that level of courtesy.
I feel that in terms of comment ranking systems, SE has one of the best models (which could arguably be tweaked), which is most definitely what has contributed to the original Stackoverflow's success (and the resulting spinoff of the platform franchise).
Since this SE is about UX in general, and not SE Meta, let's broaden the scope of the discussion to voting UI implementations in general. The decision to implement any additional barriers to user input must always be weighed by the needs and objectives of the system. For example, if your primary objective were to encourage site stickiness through user engagement, then providing the least amount of barriers to user input would be the guiding principle behind all UI decisions. On the other hand, if you want to create a forum for positive encouragement, and minimize the potential for "griefing" (I'm borrowing the term from MMO behaviour categorization here), then the more barriers the better.
Radio buttons or a plaintext field aren't really barriers, as much as annoyances - road bumps that slow you down but can ultimately be bypassed. Unless you're going to go the length of validating user input in some meaningful way, one can always just type 'sdfdssdfsdfs' into a textfield and proceed with the downvote.