Recently I came across the open source Kicad project. I had evaluated DipTrace which is inexpensive but it is not open source. I then worked with the open source gEDA tools which were ok.
Kicad looks very promising: http://www.lis.inpg.fr/realise_au_lis/kicad/
It is cross platform and uses wxWindows. It is much more polished than the gEDA tools. The file formats are all well documented which make adding symbols very easy using a python script. Kicad's source code build process stinks but fortunately there are binaries available. When I get a chance I will look into creating a Visual Studio project for Kicad so it can be built more easily on Windows.