package-user-dir
is the variable you want. From the docs:
package-user-dir is a variable defined in `package.el'. Its value is "~/.emacs.d/elpa"
This variable is potentially risky when used as a file local variable.
Documentation: Directory containing the user's Emacs Lisp packages. The directory name should be absolute. Apart from this directory, Emacs also looks for system-wide packages in `package-directory-list'.
(I found this using M-x apropos-variable
and searching for 'package').