As an escape continuation, more than you'd expect. (Exception handlers, early return.) Full continuations are rarer, but I use them for doing error recovery.
I've programmed in Scheme on and off over the last decade or so. callcc comes in handy for "return" or "break" functionality. More sophisticated uses, like threading or coroutines, have been around for a long time. Obviously those operations are harder to implement but they do exist and are widely used.
Delimited continuations are quite useful. They are essentially resumable exceptions. Lots of things can be implemented elegantly in terms of them.
It's Scheme's default undelimited continations that are bad to the point of uselessness.
Coroutines, especially when the runtime is embedded in other applications. I've built one with Erlang-style message-passing.