The other day I stumbled upon LittleO's answer in this question. To make reading it easier I did a straight copy-and-paste here:
Here's some intuition (but not a rigorous proof).
If $A$ is hermitian (with entries in $\mathbb C$), you can easily show that the eigenvalues of $A$ are real and that eigenvectors corresponding to distinct eigenvalues are orthogonal.
Typically, all the eigenvalues of $A$ are distinct. (It is in some sense a huge coincidence if two eigenvalues turn out to be equal.) So, typically $A$ has an orthonormal basis of eigenvectors.
Even if $A$ has some repeated eigenvalues, perturbing $A$ slightly will probably cause the eigenvalues to become distinct, in which case there is an orthonormal basis of eigenvectors. By thinking of $A$ as a limit of slight perturbations of $A$, each of which has an ON basis of eigenvectors, it seems plausible that $A$ also has an ON basis of eigenvectors.
While this idea struck me as very ingenious and intuitive, I'm really having difficulty formalising it into a real proof. The major obstacles are:
1). How to perturb an hermitian $A$ while keeping its eigenvalues distinct? In particular, how to find an hermitian sequence $A_n$ that have distinct eigenvalues and converge to $A$ in some norm?
2). Based on 1), how to continuously associate the eigenvector family $V_n:=[v_{n,j},j=1,\cdots,d]$ (corresponding to $A_n$, assuming $A_n$ are $d$ by $d$) to $A_n$? Having solved this I would have $V:=[v_j,j=1,\cdots,d]$ (corresponding to $A$) are the limits of $\{v_{n,j},j=1,\cdots,d\}$ respectively and hence $V^HV = \lim_{n\to\infty} V_n^HV_n = I$ and we are done.