Virtually every project that I've worked on has required full audit tracking as most of them are ecommerce or financial projects.  Using an IsDeleted flag is the easiest and overall best way to go.  Adding the field to an existing site and fully implementing it should take no more than a couple days.  If it takes longer than that, you are doing something wrong.  For tables that allow changes, we add the following fields at the end of the table:

[LastChangeBy] uniqueidentifier
[LastChangeDate] datetime
[IsDeleted] bit

For tables that do not allow changes (i.e. Payments), we add the following fields at the end of the table:

[CreatedBy] uniqueidentifier
[CreatedDate] datetime

This way we always know exactly who made what change, and when.