Checking if a date was increased by date-constants
Here's how I would do it.  First make sure the reminderDate is after the activityDate.  Then check if the month, day, and time are the same.  If so you can do the year difference.  If not then you check if just the day and time are the same and do the month difference (along with the year difference times 12).  Otherwise subtract the dates and look at the TimeSpan.  If the minutes are not zero then return the TotalMinutes.  If the hours are not zero return the TotalHours.  If the number of days is divisible by 7 then do the weeks.  Otherwise just return the Days.

public static ReminderDTO ReverseAppointment(
    DateTime activityDate, DateTime reminderDate)
{
    if (reminderDate &lt;= activityDate) 
        throw new ArgumentException("reminder cannot be &lt;= activity");

    if (reminderDate.Month == activityDate.Month 
        &amp;&amp; reminderDate.Day == activityDate.Day
        &amp;&amp; reminderDate.TimeOfDay == activityDate.TimeOfDay)
    {
        return new ReminderDTO
                {
                    ReminderComboItem = ReminderComboItems.Years,
                    Frequency = reminderDate.Year - activityDate.Year
                };
    }

    if (reminderDate.Day == activityDate.Day 
        &amp;&amp; reminderDate.TimeOfDay == activityDate.TimeOfDay)
    {
        return new ReminderDTO
                {
                    ReminderComboItem = ReminderComboItems.Months,
                    Frequency =
                        (reminderDate.Month - activityDate.Month)
                        + (12 * (reminderDate.Year - activityDate.Year))
                };

    }

    var difference = reminderDate - activityDate;

    if (difference.Minutes != 0)
    {
        return new ReminderDTO
                {
                    ReminderComboItem = ReminderComboItems.Minutes,
                    Frequency = (int)difference.TotalMinutes
                };
    }
    if (difference.Hours != 0)
    {
        return new ReminderDTO
                {
                    ReminderComboItem = ReminderComboItems.Hours,
                    Frequency = (int)difference.TotalHours
                };
    }

    if (difference.Days % 7 == 0)
    {
        return new ReminderDTO
        {
            ReminderComboItem = ReminderComboItems.Weeks,
            Frequency = difference.Days / 7
        };
    }

    return new ReminderDTO
            {
                ReminderComboItem = ReminderComboItems.Days,
                Frequency = difference.Days
            };
}


Note that if the dates differ by less than a minute you'll end up with 0 days, but I'm assuming all you're dates will differ by at least one minute based on how they are generated.