Let's take a step back. The problem you seem to want to solve with is one of focus. That problem already has a solution, similar in look but very different in practice, which others have mentioned; pair programming.
Pair programming between two competent developers of roughly equal knowledge should not be programming by dictating. Instead, one programmer codes, the other one observes. Both are thinking, and of course communication is key, but both typist and observer are equal partners; the observer should neither be a backseat driver nor be catching Zs. The pair will also switch often, with observer coding and coder observing.
The main point is to stay focused, which is what you want. If one coder spends more than a few seconds on an IM or updating his Facebook status, the other can politely clear his throat and bring the coder back to the task at hand. Of course both coders can get distracted, either on the same or different things, but usually not for very long; one of them will soon enough resolve his distraction and be tapping their feet waiting for the other. If both of them are lost in Stack Overflow, Reddit or YouTubes, well that's a problem, but it's unlikely; one or the other is going to get self-conscious about wasting the other's valuable time with lolcats or skateboard bails and suggest they get back to work.
The second point is to have two pairs of eyes looking at the code, and two brains thinking about it. Pair programming provides a real-time code review process. This requires some tact; the observer has to allow the coder the time to go back and fix the typo he made. Immediately pointing out fat-fingers and other typos when the coder, more often than not, knew exactly what he did and just wants to finish his thought before correcting it, is extremely frustrating, bordering on dictation. However, if the coding partner seems to be moving on and has genuinely missed something, the observer can point it out so it gets fixed before they waste time with a build or a test run. By the same token, if the observer thinks they know a better way, they can not only tell that to their coding partner, they can take the wheel and drive for a while.
My experience with pair programming is typically positive. My experience with programming by dictation is typically negative. As the dictator, I feel handcuffed by not having my hands on the keyboard (this is alto true with pair programming when I'm observing, but to a lesser extent). I know my way around this application (be it what we're coding or what we're coding in). I know what I want to do and exactly how to do it. Yet I'm stuck watching this other guy constantly hesitating, searching for the right command or identifier, while doing something not quite what I had in mind, but close enough that I don't call it out because that would be micromanaging (but I sock it away with all the other things that give me nervous tics by the end of the day). Whenever I've been required to dictate code, it has almost always been to a guy fresh out of college who's had maybe two semesters' academic experience with the language and IDE, and I find I have to dictate every keystroke, because if I make any assumptions that the typist knows what I want when I describe what to do in more abstract terms, I'm disappointed as he types in something so obviously wrong that even Notepad would cry.
I imagine people who have typed according to my dictation have had similar levels of frustration. They're not in my head, they don't know what I know or what I'm thinking right now, and I think much faster than I can talk so I'm probably not helping. They often don't have my fancy $130 code formatting tool, so as much as they may care about proper indentation or naming conventions, it's a hell of a lot more work for them to get there on their box than for me on mine (we're trying to fix that). They're trying to keep up, and you'd be surprised how many really smart coders are lousy touch typists. It doesn't help that coding commonly uses symbols and character combinations that don't often pop up in the everyday administrative assistant's typing test, to say nothing of a friendly IM conversation.
Programming by dictation is, IMHO, one big fat sack of "no". It is the anti-pattern to pair programming's good practice.