I've come to realize that I quite like coding in cafes, from time to time, and it can be very productive for me. This is strange, since I'm usually very sensitive to noise when I work. Almost any unpredictable sounds at the office distract me, which is why I often listen to music. However, in a cafe, I don't need that, I just automatically block out everything but my laptop.
At the office, everything that happens around me might concern or interest me. In a cafe, nobody says anything that I'm interested in.
Another distraction that cafes lack is the Internet. Even when there's Internet access, I tend to turn my laptop's wifi off so that I have a longer battery life. I might occasionally check mail or IRC, but only for a few minutes at a time. The rest of the time I crank the widget and write code or take care of other things from my next actions list.