We present a new error analysis for finite element approximations of self-adjoint elliptic eigenvalue problems. The analysis consists of three steps. First we prove a posteriori estimates for the error in the approximate eigenvectors and eigenvalues. The error in the eigenvectors is measured both in the L-2 and energy norms. In these estimates the error is bounded in terms of the mesh size, a stability factor, and the residual, obtained by inserting the approximate eigenpair into the differential equation. The stability factor describes relevant stability properties of the continuous problem and we give a precise estimate of its size in terms of the spectrum of the continuous problem, the mesh size, and the choice of norm. Next we prove an a priori estimate of the residual in terms of derivatives of the exact eigenvectors and the mesh size. Finally we obtain precise a priori error estimates by combination of the a posteriori error estimates with the a priori residual estimate. The analysis shows that the a posteriori estimates are optimal and may be used for quantitative error estimation and design of adaptive algorithms.