Actually, the accuracy of a quartz clock is sufficient, since only very short periods are measured by the GPS receiver.
The following is a simple sketch on how GPS works: Three satellites A, B, C send out a signal at the same time, containing their position.
So, the receiver knows the position of the satellites, but since it does not have an atomic clock, it does not know the time of flight, i.e. the distance to each satellite. Instead, it measures the delay between the signals, and so the difference in distance to the satellites.
Mathematically, the receiver must be on a hyperbola, the blue one from the delay between A and B and green from the delay between A and C. (Usually, a hyperbola consist of two curves, but since the signal from A came later than that of B, the receiver must be on the curve closer to B. I didn't draw the other curve.)
Now, a quartz clock isn't as precise as an atomic clock. It is said that it can drift up to 30s per month, i.e. the clock is too slow/fast by a factor of 0.00001. If the delay between the signals of two satellites is about 1 second, this gives an error of 300000km/s*0.00001s = 3km.
But GPS satellites don't send just a single "ping" each second, they continuously send a data stream including time stamp. From the time stamp, a coarse delay between the signals is calculated. Looking at the waveform of the signals, the single bits have a duration of about 1ms, so it is possible to determine the delay between two signals with a precision of better than 1ms.
If the quartz clock has to measure time delays of not more than 1ms, the drift error corresponds to not more than 3 meters!
Since there are many other uncertainties e.g. due to weather, the receiver uses more satellites than necessary to calculate the most probable position. In my sketch, only timing A<->B and A<->C was used, if we use B<->C, too, we get three possible positions, and the truth is somewhere in the middle:
(The three curves would cross on one point if there were no uncertainties)