Well, this may not be optimal, but I can tell you that it works: KiCad, an open source (cross platform) PCB design program. Its main purpose is to design PCBs, so one part of the application deals with drawing the schematics. Naturally it includes the ability to define custom components (and define the pins and labels manually), and also has a few common chips within its library already. Some features you might find handy is the ability to generate BOM lists, and doing ERC checks (automated electrical connection checks that will warn you if you tried to connect two outputs together, or forgot to connect a power supply to a power rail for example. These rules are customizable and use the pin type you define while creating a component: input, output, passive, bidirectional, power in, power supply, open collector, open emitter, etc.)
The downside is that KiCad has a moderate learning curve, and probably isn't the quickest and most convenient schematic designer conceivable, and a few quirks to get used to (newest version of KiCad already greatly improved).
TO give you an example of what the resulting schematics look like, here's one from our Forebrain (LPC1343 development boards). Forebrain's PCB was designed on KiCad, this is a printout directly from the schematic editor of KiCad, no additional changes were made to the file:
http://www.universalair.co.uk/sites/def ... ematic.pdf (PDF file). This was generated directly via the print function of the schematics editor (via a PDF printer), with the option to print the sheet reference and title block on, and in color.
Of course, KiCad isn't the only PCB designer with a schematic editor you could use, you can also try circuit simulators and such. There are a good range of open source and free commercial packages such as gEDA, Electric, XCircuit, Eagle, DipTrace, Fritzing, KTechLab, QUCS that might be applicable for your situation. I don't know the status of any of these, I've only used KiCad and Eagle.