To publish a WordPress Theme on the official theme repository at WordPress, there is quite a big list of requirements given. You must also localize and internationalize your WordPress theme to make it translatable. The process for localization is very simple that I will discuss some other time, meanwhile, you can Google it. Also, you have to create Subversions to maintain different versions of your theme.
If you don’t plan to distribute your theme to the public, no need to check all items on the checklist, just make sure you have not overlooked anything essential. But your theme should include the following functions, comments, and loops:
• wp_nav_menu() in the theme templates and add_theme_support(‘nav-menus’) in functions.php. For more details, please check Function Reference/wp_nav_menu
• add_custom_background() in functions.php if you want to allow the user to upload her own background image. For details visit Function Reference/add_custom_background
• the_shortlink() somewhere inside the Loop if you want to publicize it. For details visit Function Reference/the_shortlink
• comment_form() instead of the < form> tag and its contents in comments.php. Look at Function Reference/comment_form