Not entirely on topic (and probably well-known), but starting with version 6 (I think) you can very comfortably work with the .m files within the frontend. The frontend parses the package and displays it just like any old notebook. You can use sectionsections and do all the fancy typesetting, generate (temporary) output etc. This is also available under File -> New -> Package (.m).
The code is put into "Code" style cells which are Initialization cells, and these are saved (together with text and section information, see Pillsy´s post), stripping any output cells and leaving you with the plain package that works just fine. With the parsing, you also get some helpful formatting and additional gizmos (see image).
So you only maintain one set of packages directly, but with all the benefits of the frontend interface (notice: the parsing can take a few seconds when opening).

And if you are annoyed by the linewrapping behaviour of the package stylesheet, have a look at this thread: Viewing packages in Mathematica