Я обычно предпочитаю, где это возможно, использовать значение по умолчанию для типов значений, чтобы определить, установлены ли они. Это, очевидно, невозможно все время, особенно с целочисленными типами - но для DateTimes я думаю, что резервирование MinValue для обозначения того, что оно не было изменено, является достаточно справедливым. Преимущество этого по сравнению со значениями nullables заключается в том, что в одном месте вы получите исключение нулевой ссылки (и, возможно, во многих местах вам не нужно проверять нулевое значение перед тем, как получить к нему доступ)