If you're looking for a geometric interpretation of Gram-Schmidt, the finest I've seen comes originally from Hestenes and Sobczyk, "Clifford Algebra to Geometric Calculus". It involves the wedge product. Here's a quick exposition of the main ideas: both in algebraic form, and in plain English.
I'll call the original (non-orthogonal) frame [itex]a_i[/itex], and the orthogonal frame [itex]c_i[/itex]. Assume there are [itex]n[/itex] vectors.
First, we need a way to represent "the subspace spanned by the first [itex]k[/itex] vectors". This is given by
[tex]A_k = a_1 \wedge a_2 \wedge \ldots \wedge a_k[/tex]
If you don't know what the wedge product means, simply think of [itex]A_k[/itex] as "the subspace spanned by the first [itex]k[/itex] vectors.
Now, the subspace spanned by all the vectors is of course [itex]A_n[/itex]. We will write this down, then multiply by unity in a clever way.
[tex]
\begin{align}<br />
a_1 \wedge a_2 \wedge \ldots \wedge a_n &= A_n \\<br />
&= (A_1A_1^{-1})(A_2A_2^{-1}) \ldots (A_{n-1}A_{n-1}^{-1})A_n \\<br />
&= A_1(A_1^{-1}A_2)(A_2^{-1}\ldots)\ldots(\ldots A_{n-1})(A_{n-1}^{-1}A_n) \\<br />
&= c_1(c_2)(c_3)\ldots(c_{n-1})(c_n) \\<br />
\end{align}[/tex]
Here, the expression for the [itex]k[/itex]th vector is
[tex]
c_k = A_{k-1}^{-1}A_k[/tex]
What we have done is to write a pure [itex]n[/itex]-vector (i.e. [itex]A_n[/itex]) as the geometric product of [itex]n[/itex] different vectors (i.e. the [itex]c_k[/itex]). These vectors must therefore all be mutually orthogonal.
What did we do, in plain English? Well, to find the k'th Gram-Schmidt vector,
1) Take the subspace spanned by the first [itex]k[/itex] vectors
2) Remove the subspace spanned by the first [itex](k-1)[/itex] vectors
In other words: we keep only what the [itex]k[/itex]th vector "adds", only what it gets us that we couldn't get before.
Note that the usual Gram-Schmidt is an iterative procedure: you actually need to calculate [itex]c_1, c_2, \ldots, c_{k-1}[/itex] before you can get [itex]c_k[/itex]. Not so with this exposition: we can directly write down an expression for any [itex]c_k[/itex] involving only the original [itex]a_i[/itex]. Moreover, the expression is a simple one with clear geometric meaning. A very elegant take on this well-known algorithm -- I was delighted when I first read it.