While I agree with 95% of Jeffrey's post I have to throw down the gauntlet on the magic number of 10 lines in his suggestion. Just as "magic numbers" are rather undesirable in code, the concept that a method should be constrained by a number of lines is undesirable as well.
<rant>For me, this brings back memories of writing assignments in school where the teacher would insist that you write 1500 words. What if you could elegantly cover the topic in 1000? What made 1500 so damn special anyways?</rant>
Anyways, I digress. What I think should be said in place of the 10 lines concept is that wherever possible, a method call should be a complete thought / task. Most tasks can be divided into subtasks which are thoughts on their own.
The thing you really have to watch out for though (and the thing that prompted this post) is "code hop". Code hop is when someone takes the 10 lines concept and goes way too far with it. If I have to jump into more than 4 files just to follow a method call through the code, it's almost as bad as having a method of 60 lines. At least with the 60 line method I can easily see the flow and steps that are being taken without having to jump around. The downfall of the 60 line method is that the steps are not broken out to be reusable.
So that's really the distinction I want people to make. Go for simplicity and readability first. Splitting out everything all over the place isn't simple or readable, nor is dumping everything into a super method. Organization of code is somewhat of an art, and is another one of those things that coders can really benefit from exploring the code of others.
Bottom line if you're walking through my code, if something isn't meant to be reused, I tend to have a longer method to keep complete thoughts together. I can always pull out chunks of code refactoring to make it reusable if the need arises. I also don't mix major tasks, data retrieval is not mixed with business logic, etc. But those are "thoughts" as described above.
Fun semantic argument either way. ;)