Having been interviewing people from time to time during the past decade or so I don't think the overzealous interview processes that companies currently do actually pay off in value versus time spent. Usually it's rather obvious whether the candidate is a "hire", "no-hire", or "not really sure" (=also a "no-hire"). Alternatively the company has collected a list of up to few candidates that are kind of all right but none of them strikes as a real yes/no either, so they'll end up hiring one of them the next time they really need someone, just anyone.
I think that a short phone interview quickly followed by a cup of coffee and an on-site 1-2 hour programming task with an informal presentation and/or QA section about the task with the dev team would be enough.
Basically, hiring boils down to
a) candidate not being an asshole, and
b) candidate being able to write programs.
You can figure out a) by spending time with him/her and you can figure out b) by seeing if s/he's able to finish the programming task. Then when everything has been sorted out, the athmosphere is more casual to talk about the approach the candidate chose, about the corner cases and pros/cons that were traded off during crafting the solution which also reveals quite a lot of the candidate. And that's all based on some programming task that is known and common to both parties which gives a nice frame of reference. That is, as opposed to how usually developers want to talk about things they're working on themselves and the candidate wants to talk about things he has done so far himself.