That's about it, really (though I've written quite a lot of code in a freezing office on the weekend - huge motivation boosts productivity for obvious reasons).
What kills productivity? Colleagues interrupting my train of thought, either by requesting my input or simply by doing something that inherently distracts. Sharing an office with sales staff can be a killer, simply because they're so often on the phone or running round assembling information. Music can help with the happy place but isn't even always on at home (and I love music, have far too many albums at my fingertips :-)) - its benefit for work is partly comfort but mostly for me in providing a background noise I can predict and so tune out. It might as well be a white noise generator in some ways.
I've been in offices where you shivered all morning, or where every last movement caused sweat to drip off you - neither was very productive. I can type just as easily on a laptop (heck, I've written a fair bit of code on a 9" netbook) but accept I'm unusual in that way :-) - but a machine that gets in your way is never ideal.
What can be the biggest killer though? Motivation. You tell me you code as efficiently when presented with a task which will achieve almost nothing of benefit if it ever goes live and involves large-scale maintenance on a poorly-built legacy codebase. We do our best work when there's a reward of pride, and when we know that our best work is still only polishing a turd, it's far harder to summon the energy.