Designing a theme is harder in many aspects than designing a site for a client. You don't know what your content is going to be, who your audience will be, or if they will even want your design. Not to mention the fact that many others are creating the same type of thing for the same people. It can be a tough market. Below are some guiding principles that may help you in your theme designing endeavours.
1. Design for ranges, not extremes.
If you spend time designing for every single possible instance one to three things will likely happen: You will get entirely frustrated with your design, you will get entirely frustrated with your CSS and/or you will quit. Take for example a blog's tagline, if you have included a place for this in your design make sure that it accommodates anywhere from several words to a sentence, not three paragraphs.
2. Don't let your biases exclude common elements.
I don't like tags; but 1 billion other people and Google do, so I better include tags in my theme. Most regular functions of a blog are there for a reason--people utilize them. If you leave something out that someone wants or needs, more than likely they'll look for a different theme.
However, I will make the caveat that this line of advice is relative to the goals for your theme. If you don't care to make it popular then feel free to ignore this part, and I say that seriously, don't let this bog you down if you're not going for mass market appeal. But if you are going for a high user base then make sure you include common blog elements.
3. One good theme is better than twenty rushed and mediocre themes.
Take your time, make it good. If I want a mediocre theme I already have about 1,000 from which to choose. If I want a good theme the number decreases dramatically. Add to the latter, not the former.
4. Less is more, graphically speaking.
Less graphics usually equate to easier customization; and it makes the download size smaller (which you will appreciate if your theme gets really popular). The challenge is making the theme unique without the header graphic of your favorite city skyline. Take the challenge, it's fun.
5. Don't let your search results page be an afterthought.
I don't have any strong data for this proclamation, so I'm a little hesitant to include it, but I hypothesize that a lot of people utilize a site's search function to find old posts. Especially if those who are using your theme have a large archive of previous posts. Who knows, maybe that would be a decision-making feature for someone.
6. Your HTML & CSS aren't as important as you think.
This is a tough one to swallow, but if I had to pick a percentage I would guess that 50% of your theme users will never look at your markup. Out of the other 50%, about 90% are only making a quick change to the markup or code. So I wouldn't spend the majority of your time arguing with yourself whether an
h3tag should have a class of "title" or "post-title".
Conclusion
Those are six principles that I tend to gravitate towards when I'm designing themes. Let me know in the comments if you have others.
