First of all - "good" is a bit vague a term.. Good for what ?? IF you mean technically valid , there are SOOOO many items to check, that you can fill a whole website with it . Those items also depend on personal preferences and are not always objective AND are changing with time .
If you mean "efficient" as in resource efficient for server side , that would include the analyzing of each php function markup and execution order.
If you mean "efficient" for client-side loading , there are more than 100 variables that can effect that , inluding but not limited to : kind of font used (and not only number ) compression of data and scripts, reducing http requests with sprites and combined JS . optimizing the JS - loading resources from cdn - mirroring resources ,clouding , caching and on and on ..
In shorts , I can start listing here the "obvious" like , Valid csS and XHTML , Html-5 ready , Full page templates, full sprites, Loading from CDN, support for munues, custom-images or all new features ,etc. etc. I can also refer you to each of the items here : http://codex.wordpress.org/Theme_Development_Checklist or here : http://codex.wordpress.org/Theme_Unit_Test , or many other "checklists" that you will find in google .. But like I said, the term "good" is not so objective , and the to-do list will probably have 1000 items on it .
BTW - there are even some plugins that perform some tests on your theme - like http://wordpress.org/extend/plugins/theme-check/ and http://wordpress.org/extend/plugins/theme-test-drive/ . in shorts - IMHO this question is just too enormous to answer .