Make a copy of apa.bst. (In a current TeX Live distribution it is located in /usr/local/texlive/2011/texmf-dist/bibtex/bst/beebe/apa.bst
). Call it myapa.bst or something appropriate, and save it in your local texmf folder: <path to local texmf>/bibtex/bst.
Edit the function {format.names}
Change line 250
{ " and " * t * }
to
{ " \& " * t * }
Edit the function {format.lab.names}
Change line 876
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
to
{ " \& " * s #2 "{vv~}{ll}" format.name$ * }
Now use \bibliographystyle{myapa} in your document.
The current version of the APA style uses "&" in the bibliography, but not in the citations, I think. So if you really need to conform, you should change only the format.names function, not the format.lab.names.
Alternatively, switch to using biblatex-apa, and redefine the \finalnamedelim macro:
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{<your-bib-file>}
\newcommand*{\finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\&\space}
\begin{document}
...
\printbibliography
\end{document}
The redefinition of \finalnamedelim is not required if you don't change in-text citation "and"; the bibliography entries will automatically use "&".