In addition to Katie's excellent response and a general understanding of the technical/business logic complexity of implementing a feature I tend to find myself thinking in a "ballpark matrix" sort of way.
For example if I have a good idea of broad types of users interacting with the application I may know that the feature needs to be tested for "guests", "buyers" and "sellers" as 3 different sets of users with 3 levels of permissions. Perhaps your site also supports users with English, French, and Chinese as their primary languages. This would be another set of parameters to combine. Now let's go even further and assume you want this feature to be accessible to users on Chrome, Firefox, and for some reason IE9. We've now established at least 9 different use cases to account for with the full matrix of combinations looking closer to 27 scenarios. This isn't to say that you will or should hit all 27 combinations in all cases, but it has served me well as a "multiplier" of other estimated complexity.