This depends on your chosen environment: your language, your standard IDEs, your coworkers, and what inherently looks pretty and easy to understand for you.
You didn't mention which of any of these you choose to follow. If you ever have to expect editing this code in a terminal window you can start with the classic standby: 80 characters -- more than that and some terminals and CLI editors break or wrap painfully. Many IDEs will provide a visual cue at the 80th column mark for just this reason. If you can reasonably expect everyone who is looking at the code will be using fully featured IDEs (Examples including: XCode, Eclipse, and MS Visual Studio) then this is less of a requirement for you.
In my experience all of the places prefer to avoid overly long lines even when we all were using IDEs that could autowrap lines. In my experience line wrapping is considered bad and disabled in all situations.
From a semantic context I try to break at clause points. Basically if the line will end within 120 characters I'm less likely to break it up if there aren't convenient locations. If it would otherwise be longer than 80 characters and there are identifiable clauses I break them up there.
A 'clause' as used here is an expression that could be cleanly parenthesized. Mathematical multipart expressions get broken up at the operator, with the operator the first thing on subsequent lines. When talking about a long logical block, as in an if statement or a while/for loop, the same thing applies, I break the statemnt up with the subsequent lines indented and the operator first.
If you're working on OSX with Objective-C XCode will help you out. It automatically will indent subsequent lines such that the ':'s are aligned evenly. This gives a potentially easy to read method call.
Effectively you should try longer line lengths for yourself and decide at which point things get difficult to understand. With written text (comments or fiction, both) I find that excessively wide columns feels like runon sentences and makes it easy to lose my place. When lines are longer than 100 characters in code it usually means that there are many clauses, and if you have to scroll right/left to read, then it's easy to lose the flow of what your code is trying to do. Finally, when you have roughly 100 characters in a line, you can have two code windows open side by side for compare/contrast/contextual information... etc. Long lines make that impractical.
Many coders will agree that with a neat and clean coding style that you are familiar with, you can often detect lines or zone that are complex or troubling by how they fall out of the norm. This is a nearly subconscious cue that lets you notice when a line or method needs some refactoring or some love. The nail that sticks out is the first to get the hammer (if I applied that folk law correctly). And overly long lines are clues that something needs to be simplified or commented upon.