As a Theme Wrangler, I spend a lot of time creating and maintaining themes for WordPress.com. Code and usability reviews of themes created by Premium Partners are also a significant part of the job.
The Wranglers are supported by Happiness Engineers. They interact daily with users that have difficulties setting up or customizing themes. If there’s a problem with a theme, they will detect it while providing support.
Their feedback, along with the sales numbers and refunds rate provide a good picture of what makes for a successful theme.
The key is simplicity.
Don’t confuse your users by relying on Post Meta, custom Widgets, Shortcodes, Custom Post Types, option panels or page builders to achieve a desired layout.
Keep the code simple and efficient. Don’t introduce unnecessary complexity and abstraction. Use the WordPress Template Hierarchy and account for the user’s Reading Settings.
Stay away from theme frameworks, CSS frameworks and options frameworks. Don’t use a CSS preprocessor, instead keep your CSS selectors simple and easy to override.
Spend a lot of time on fine-tuning your theme’s typography and use of white space. Keep it elegant, and don’t go overboard with the animations. Also, nobody really needs five different sliders.
Make use of WordPress’ built-in customization options like Custom Headers, Custom Backgrounds and Widget areas if appropriate. Your theme should need minimal set up and it should be easy to customize with Custom CSS or via Child Theme.
Test it with a variety of content and also edge cases. Make it translation-ready and make sure to include styles for right-to-left languages.
So focus on the basics, but do them really well. This will make your theme more popular as well as easier to maintain and support.