MathOverflow will be down for maintenance for approximately 3 hours, starting Monday evening (06/24/2013) at approximately 9:00 PM Eastern time (UTC-4).
show/hide this revision's text 2 added exposition

The subgroup generated by reflections is normal, and therefore is finite-index by the Margulis normal subgroup theorem (as long as the rank is $\geq 2$, so $|p|\geq 2, |q|\geq 2$).

Addendum:

The conjugate of a reflection is a reflection. In fact, a reflection may be defined as a matrix element $A$ such that $I−A$ has rank 1. This is clearly conjugacy invariant. Also, if you conjugate a reflection in the vector $v$ by a matrix $B$, then you get a reflection in $Bv$.

There's also the congruence subgroup property, so any finite-index subgroup is a congruence subgroup (in rank >1). What you can do (in principle) is start enumerating congruence subgroups (and use Reidemeister-Schreier to find generators), and start multiplying together reflections. Eventually, you will find generators of a finite-index congruence subgroup which are products of finitely many reflections. Take the normal subgroup generated by these (assuming we have included a conjugate of every reflection) in the finite quotient to determine the subgroup generated by reflections.

show/hide this revision's text 1

The subgroup generated by reflections is normal, and therefore is finite-index by the Margulis normal subgroup theorem (as long as the rank is $\geq 2$, so $|p|\geq 2, |q|\geq 2$).