Does every table that you care about time based access have an effectiveDate for every row? If you can either determine that a given table is "wide open" date-wise, or that it has an "effective date" for every row, then there is a workable solution.
If there is no easy way to date your rows/changes, then things get ugly. There are a number of database engine specific solutions that might be easy, but the only effective way to deliver what you've described across any database platform is to make lots and lots and lots of backups, and be prepared to run up equivalent amounts of disk for the restores if multiple clients need to have multiple cut-off dates.
Good luck!
-PatP