When using ArcGIS to make maps, the software by default pushes point and polygon labels around automatically to avoid overlap using a proprietary algorithm. They refer to t
AFAIK, the best that exists is directlabels, available from R-forge and CRAN and with a comprehensive examples page.
This seems a good starting point, but in my opinion has the following negative aspects:
ggplot philosophy of separating data and presentation, directlabels returns a ggplot object rather than a geomgroup aesthetic, not individual pointsI have glanced at the source code some time ago and I think it should be reasonably easy to adapt the code to address both points I mention.
There is an example of how to use this with ggplot in this question on SO