I typcially don't use DateTimeOffset.
Here is a simple example of how I handle timezones in my database driven web applications:
Store all dates as UTC:
DateTime.UtcNow
When displaying dates to users, use a specified timezone:
//fetch my utc date from database
DateTime someUsefulDate = GetSomeDateFromDatabase();
//fetch desired timezone (see below)
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
//adjust utc date to proper timezone date
DateTime adjustedDate = TimeZoneInfo.ConvertTimeFromUtc(someUsefulDate ,zone);
For web applications, I have the user pick their timezone. You can save this choice in a profile or session etc..
I get my system's timezones into a drop down like this:
TimeZoneDropdownList.DataTextField = "DisplayName";
TimeZoneDropdownList.DataValueField = "Id";
TimeZoneDropdownList.DataSource = TimeZoneInfo.GetSystemTimeZones();
TimeZoneDropdownList.DataBind();