В первом случае, DateAdd("d", d, Session("CheckIn"))
, значение сеанса неявно преобразуется в тип данных DateTime, поэтому DateAdd завершается успешно. Однако, чтобы затем сравнить с переменной сеанса, я подозреваю, что она неявно преобразуется в строку, используя любой формат по умолчанию (вряд ли это будет дд / мм / гггг).
Вам необходимо убедиться, что сравниваемые два значения относятся к одному типу. Я бы предложил:
if CDate(session("CheckIn")) = DateAdd("d",d,Session("CheckIn")) then
за первый чек