Preposition со is used:
1)before words which begin with с,з,ш,ж + consonant or with consonant щ
со славой, со звездой, со шкафа, со жгутом, со щами.
2)before the genitive and instrumental case of the following one-syllable words:
лев, лёд, лён, лоб, мох, ров, рот(схватка со львом, виски со льдом)
3) with мной, мною(со мной, со мною)
4)with forms of tbe words
вошь, весь, всякий, всяческий, вторник, второй, второе, многие, многое (со многими людьми, со всяким встречным)
5)with idioms:
со вкусом (to do something ), со вниманием( attentively ), со временем (in the future)--со временем все наладится, со двора (уйти), со дна (достать), со дня на день (soon), со дня (as a point in time for counting)--со дня свадьбы прошел месяц.
But :
Фотографии с дня рождения.(taken on that very day)
6)with вчерашний we use both с and со
с вчерашнего дня и со вчерашнего дня.
7) Besides, со is used in solemn speech, archaic, humorous,folklore styles, etc.
со товарищи, со Ильей со Муромцем, со крестом
Thus, с днем рождения, фотографии с дня рождения,but:со дня рождения прошло несколько дней.со днем is archaic.
.The sources are reliable :Розенталь and new.gramota.ru.