Justin Tadlock released a new plugin and theme today. The plugin is a custom post type and taxonomy for managing portfolios, called… wait for it… Custom Content Portfolio. It is available for free in the WordPress plugin repository. He released a new theme too, called Chun. It's a free responsive theme that features the portfolio plugin front and center.
These are good items to look at if you want to learn how to make plugins and themes the right way. (PS: this website is build on Justin's Hybrid Core framework, as well. Drop in frameworks are the jam.)
On a related note: the marriage of themes and plugins, in an elegant manner, is a beautiful thing.