How do mining pools figure out the hashing speed of the miners connected to it?
Since pools only receive successfully calculated shares they must approximate your actual hashrate based on the number of shares submitted.
Assuming we're talking about difficulty 1 shares, you should be able to approximate hashrate via
H = S * 2^32 / T where
H = hashrate,
S = shares submitted and
T = time in seconds. Your estimate will be more accurate for larger values of T.
It takes approximately 2^32 hashes to find a share and each share has a 1/D (D = difficulty) chance of correctly solving the block. From that, with some simple math, you should be able to calculate almost every important thing about mining.