Peraltro...... $now da dove esce fuori?
E la data del compleanno da controllare se passata o futura????
Io riscriverei il codice così!

Codice PHP:
$today time(); //giornata odierna - in formato timestamp
$compleanno xxx
/* 
qui non so come fai a recuperare la data
se da DB o meno ed in quale formato
Eventualmente la porti in formato Timestamp con strtotime()
*/

// controlli se il compleanno è già passato
if ($today $compleanno) {
// il compleanno è già passato per cui aggiungi 
// un anno alla data odierna poi fai la differenza

} else {
// il compleanno deve ancora arrivare
// fai direttamente la differenza

Spero di essere stato chiaro.