Posting this here from my linear algebra class. [...]
This is a mess without LaTeX, but anyway:
Let's write [x,y] for x^T * y (just looks better), use w for v_s (yes, s, not s+1) and t for [w,w] (this is >0). Let U be the hyperplane orthogonal to w, so U = { x | <x,w>=0 }. Then let p be the projection onto U, so p(v) = v - ([v,w]/t)w [an easy check gives that this is in U and it is a linear map].
We are given that <v_i,v_j> is <0 for i,j from 1 to s+1 and not equal to s. Thus
<p(v_i) , p(v_j)> =
= [v_i-([v_i,w]/t)w , v_j-([v_j,w]/t)w] =
= [v_i,v_j] - [v_i,w]*[v_j,w]/t - [v_j,w]*[v_i,w]/t + [v_i,w]*[v_j,w]*[w,w]/t² =
= [v_i,v_j] - [v_i,w]*[v_j,w]/t.
But [v_i,w] and [v_j,w] are <0 and t >0, thus - [v_i,w]*[v_j,w]/t is <0, too. Together with [v_i,v_j] <0, this gives that <p(v_i) , p(v_j)> is <0.
We have shown that after applying p, we got the same setting (but with one vector less as w is sent to 0 by p). So let u_1=p(v_1), ..., u_(s-1)=p(v_(s-1) and u_s=p(v_(s+1)) and we still get [u_i,u_j] <0 for i not equal to j. By induction on s, we may assume that we have already proven the result for s' = s-1. In other words, u_1, ..., u_(s-1) are independent. This means nothing else than p(v_1), ..., p(v_(s-1)) being independent. As a result, v_1, ..., v_(s-1) are independent, too (any dependence of the v_i would by p get an dependence of the p(v_i)). But w is independent from p(v_1), ..., p(v_(s-1)) as it is orthogonal to the plane U where they live in. But v_i and p(v_i) only differ by a multiple of w, thus also v_1, ..., v_(s-1) are independet from w=v_s, which we wanted to prove.