There are 10's of examples online stating how to check for duplicates items in a list, which you can change for contact list,
here's an example,
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
if (properties.ListTitle.Equals("Book Massage"))
{
try
{
using (SPSite thisSite = new SPSite(properties.WebUrl))
{
thisSite.AllowUnsafeUpdates = true;
SPWeb thisweb = thisSite.OpenWeb();
SPList spList = thisweb.Lists[properties.ListTitle];
SPQuery query = new SPQuery();
query.Query = @"<Where><Eq><FieldRef Name='Time' /><Value Type='Choise'>" +
properties.AfterProperties["Time"] + "</Value></Eq></Where>";
SPQuery query2 = new SPQuery();
query2.Query = @"<Where><Eq><FieldRef Name='Date' /><Value Type='Choise'>" +
properties.AfterProperties["Date"] + "</Value></Eq></Where>";
SPListItemCollection listItem = spList.GetItems(query);
SPListItemCollection listItem2 = spList.GetItems(query2);
if (listItem.Count > 0 && listItem2.Count > 0)
{
properties.Cancel = true;
properties.ErrorMessage = "The item exsists braa!";
}
}
}
For More Information click here