Your first port of call should be the M-x list-packages command. This connects to the GNU ELPA (“Emacs Lisp Package Archive”) server and fetches the list of additional packages that it offers. These are GNU packages that are available for use with Emacs, but are distributed separately. Select a package to get more details about the features that it offers, and then if you wish, Emacs can download and automatically install it for you.
The Emacs Lisp List (ELL), maintained by Stephen Eglen, aims to provide one compact list with links to all of the current Emacs Lisp files on the Internet. The ELL can be browsed over the web, or from Emacs with the ell package.
Many authors post their packages to the Emacs sources newsgroup. You can search the archives of this group with Google, or Gmane, for example.
Several packages are stored in the Lisp area of the Emacs Wiki.
Read the file etc/MORE.STUFF for more information about external packages.