I see this is an old question, but nobody has answered you. I think you might be confusing two different things.
A coordinate with ~2 mm precision can be obtained using what is called differential GPS processing (with special programs such as GAMIT or BERNESE). This post-process procedure needs data collected with geodetic receivers that are capable of recording the phase of the GPS signals. This precision cannot be obtained using pseudoranges, which are calculated from the GPS C/A code travel time to each satellite.
I think you might be confusing the pseudorange precision with coordinate precision. Pseudorange precision varies a lot with receiver type and the use of DGPS, but it is never better than ~2 m (as far as I know). Again, do not confuse pseudorange precision with the precision obtained by a differential GPS. Also, pseudorange or coordinate precision does not depend on satellite speed.
this question is not very easy to reply, because pseudorange errors depend on many factors such as environment satellite elevations and C/N0 for example. But not only, what do you mean for pseudorange error? After the application of the model errors such as Ionosperic and Troposperic?
I tried to give an answer in the paper http://download.springer.com/static/pdf/837/art%253A10.1007%252Fs10291-014-0379-3.pdf?auth66=1426507889_1181f0853481a9b5da2782c15ff8e76f&ext=.pdf where GPS and Galileo pseudorange and pseudorange rate errors were computed using different strategies.
For the DGPS accuracy it is related to the used observables (Code or carrier phase) to the length of the base line ecc ecc.