I heard this from someone and liked it: Get your dev candidates to come in and spend one day with you building something - ideally of the type that you would like them to do during their work with you and you would likely want to spend the time in choosing a good task and environment to test their skills on an even playing field.
I personally would test them on fixing a bug on a large project - maybe something open source and something that you already know how to fix.
You might want to do a variant of the above.
I like the "get them to spend a day at your office and do some real work advice", but that may not always be practical. I think you can get some of the results by creating a small real-code task that you can have all candidates complete before coming to the interview. You can always find out if they did it (instead of somebody else) with a few questions on the interview.
Other than that, go with your gut feeling. Do you like the person you talk to? Do you like his/her attitude? Would you love to work with him/her? To me that is a lot more important than being skilled in the technology in fashion today.
I have hired many interns over the years. I learned a few things. For instance, resume is not a predictor of success.
I believe in doing. Put them in real-life situations. If I give you a keyboard and a Linux shell, I can tell pretty quickly whether you are a hacker or not.
What you don't want to rely on is the "behavioral interview" with questions such as "tell me a situation where you showed leadership".
Believe it or not, I actually wrote a guest article on the topic more than 10 years ago and it hasn't aged: http://www.asktheheadhunter.com/gv981229.htm