Ah, this is a question I have struggled with. I think the answer depends wether you are intending to use the image in LaTeX or not. That said, in my opinion most answers provide good solutions (I've tried them all), but my recommendation is something that hasn't been mentioned:
Inkscape: Inkscape is a free, open source software similar to Adobe Illustrator. It is very simple to create elegant vector graphics that scale up nicely.
*Inkscape+PDFLaTeX: If you want to use LaTeX then you can use the same images created normally in Inkscape and then save them as PDFs using the
Inkscape+PDFLaTeX option. This will produce a PDF with all but the text, which then can be rendered on top using the LaTeX engine. This has the advantages of
- Maintaining font consistency between the surrounding text and the graphics' text.
- Greatly improving the typesetting pf mathematical text, which can be written "in code" in Inkscape and then be rendered correctly on the document. This is a great advantage over the non-LaTeX options.