As per MSDN, http://msdn.microsoft.com/en-us/library/ms646302%28VS.85%29.aspx
GetLastInputInfo does not provide
system-wide user input information
across all running sessions. Rather,
GetLastInputInfo provides
session-specific user input
information for only the session that
invoked the function.
Is there something similar which provides a system-wide last user input information?
I believe the only way to do this is through hooking into the shell.
This is (obviously) something that must be done carefully and is something not feasible in managed code until this is fully supported by the operating system (not till windows 7) so you will have to use some unmanaged code to achieve this, perhaps updating some global state queryable from your managed code. The API for this is SetWindowsHookEx.
With the session isolation of Vista onwards you will need elevated priviledges to do this for other sessions. In this taking cues from how keyloggers work may help but I do not have a ready link to some source for this.
As a first start here is the source from the windows port of condor for spotting keyboard activity: