Верно: в День города.
Название праздника День города пишется с большой буквы, такова рекомендация словарей и справочников. По аналогии также уместно писать с большой буквы и День села (праздник).
В названиях регулярных мероприятий слово день пишется со строчной буквы, а в названиях праздников – с прописной. Ср.: день открытых дверей, день встречи выпускников и День авиации, День города. Слово неделя как первое слово в составе семидневных календарных отрезков, отмеченных каким-нибудь общественно значимым мероприятием, пишется с прописной буквы, напр.: Неделя славянской письменности и культуры, Неделя развития транспортной инфраструктуры.
Учительница неправа. Правильно: на день рождения. Вообще говоря, этому сочетанию не везет, его всячески искажают: пишут с буквой е на конце, пишут слитно, употребляют как слово среднего рода (*деньрождение, с деньрождением, мое деньрождение). Всё это грубейшие ошибки. На самом деле это обычное словосочетание, такое же, как, например, День города. Главное слово – день, зависимое – рождения (день чего? рождения, родительный падеж). Правильно: день рождения, на день рождения, с днем рождения, мой день рождения.