Interesting question, because to do it right you need to get the remaining birthdays for this year, then wrap around to next year. Something like:
Select ...
From 'Table'
Where DayOfYear(BirthDate) >= DayOfYear(CurDate())
Order By DayOfYear(BirthDate)
union
Select ...
From 'Table'
Where DayOfYear(BirthDate) < DayOfYear(CurDate())
Order By DayOfYear(BirthDate)
EDIT
Thinking about this, you actually do need to use the broken-out "month" and "day" fields instead of just looking at DayOfYear; otherwise you'll get the wrong answer if this year is leap year and the person was born in a non-leap year (or vice-versa). That's because we think of our birthday as being "March 1st", not "the 60th day of the year".
And, of course, you can't use different "order by" clauses in the two halves of the UNION...
So, something more like:
Select 1,mon,day,name
From 'Table'
Where mon > Month(CurDate())
or ((mon = Month(CurDate()))
and (day >= DayOfMonth(CurDate())))
union
Select 2,mon,day,name
From 'Table'
Where mon < Month(CurDate())
or ((mon = Month(CurDate()))
and (day < DayOfMonth(CurDate())))
Order By 1,2,3