there are two approaches that you can take, neither of which are very satisfactory:
ping them every x seconds and reset their uptime if the ping fails. this is bad because it requires the user have a static ip and that your network connection is always good. it's also a pain to run
write a program that the user run on their local machines that gets the uptime and then sockets or emails it to you, ie
uptime > /tmp/foo && mail -s "user's name" you@example.com < /tmp/foo && rm -f /tmp/foo
obviously this is easy to cheat with... so it will probably need to be done in c and compiled and have some sort of verification methodology (ie a hash of the uptime for confirmation). drawbacks are that this is a serious pain to write for multiple architectures and clever users can spoof it...