This is somewhat of a problem in SQL Server.. It is almost impossible to find out when an object like a table is modified...
However....
The sysobjects table contails a couple of interesting columns
Base_schema_ver or schema_ver(computed)
They both contain the same info which increments when the schema is modified..
Unfortnatly you can't get to find out "When" they are modified, but if you had a table that stored the last known schem_ver of the objects you wanted to store "version" type info on, you could check the latest values against the last "archived" value and then raise an error/alert on modification (by running a task that checks on a scheduled basis) and that could then provide an approximate "when" as well as the fact that it has been changed.
Also unfortunatly (maybe not) you can't create a trigger on a base table, so the option of having a trigger tell you when a table is modified won't work eiter..
HTH
Rob