Are you keeping a reference to your timer somewhere to prevent it being garbage collected?
From the docs:
As long as you are using a Timer, you
must keep a reference to it. As with
any managed object, a Timer is subject
to garbage collection when there are
no references to it. The fact that a
Timer is still active does not prevent
it from being collected.