I've found an interesting/alternative/different way of coming up with features is to think of features to remove.
In a way, the Gmail example is an interesting illustration of this - Things that require lots of fiddly functionality in a traditional client, can be done with a handful of (more powerful) features in Gmail.
Quite often it's the features that you actively leave out that distinguish your software.
Yeah, we've sort of done with our analytics startup mixpanel.com. We purposely don't do things Google Analytics does to make sure we create something of value and help innovate the field.
Hi DenisM, we're going to push some code in an hour that will hopefully clear that--thank you for your feedback.
To clear things: Instead of tracking simple things like page views and referrals, mixpanel lets you track how users interact with every feature of your website. Just ping our API when a user listens to a song, uploads an image, etc and we'll help you visualize it to help you understand how your startup is doing.
Email me at suhail[at]mixpanel[dot]com -- we'd be happy to help out if you want DenisM =).
I like the subtext of developer humility on these points. Over-thinking scale might be just as annoying a problem for you down the line as over-thinking complexity.
In a way, the Gmail example is an interesting illustration of this - Things that require lots of fiddly functionality in a traditional client, can be done with a handful of (more powerful) features in Gmail.
Quite often it's the features that you actively leave out that distinguish your software.