Most OSes these days read the RTC on boot, and write to it at shutdown, and don't touch it inbetween.
You have a couple of options if you want to really diagnose this thing:
1) Boot a linux CD/usb image. (e.g. Knoppix)
2) Note the reported time.
3) Wait a bit just to be sure.
4) Pull the plug from the wall (so it can't have a chance to touch the RTC).
5) Boot linux again and note the reported time. If it hasn't changed much from (2) then it seems the RTC is just stuck. If it has updated, then perhaps there is something wrong with the powersupply doing something funny in standby?!?! Then again the backup battery should take care of that, right?!?
Another option would be to directly access the RTC chip. I know how to do this in Linux, not so sure about Windows. Again, something like Knoppix might help here.
Compile/run a quick and dirty program like this (this is just off the top of my head, so it might be a little off):
// begin seconds.c
#include <sys/io.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
// RTC and CMOS battery backed RAM are on ports 0x70 and 0x71
// for more info see
http://bochs.sourceforge.net/techspec/PORTS.LSTioperm(0x070, 0x2, 1);
// address 0 is the RTC seconds
outb(0x70, 0);
printf("Seconds: %d\n", inb(0x71));
}
// end seconds.c
# #Compile the program
# gcc -o seconds seconds.c
# # Run it as root
# sudo ./seconds
# # wait a bit
# sleep 10
# # run it again
# sudo ./seconds
This should see if the RTC is updating.