First of all, Value is the DateTime, so you don't need the ".Date" on the end.
Secondly, CompareTo just gives a boolean result to tell you if one date is earlier than the other.
Subtracting one date from the other results in a TimeSpan, which gives difference in days, hours, minutes... Not very helpful, obviously, because years are unfortunately not all the same length.
So the easiest solution would be to add 18 years to the earlier date.
if (dateTimePicker1.Value.AddYears(18).CompareTo(dateTimePicker2.Value) > 0)
{
MessageBox.Show("minimum age must be 18 years");
}
Disclaimer: I've not tested this, so you may have to fix any typos yourself!
Regards,
Ian.