So the question states that Albert (A) knows the month and Bernard (B) knows the day. Since Initially, B does not know when the birthday (BD) is that immediately rules out the two dates which occur only once in the possibilities (19th and 18th). The BD therefore cannot be the 19th May or the 18th June.
Now, how does Albert know that Bernard does not know when the birthday is? Assuming Cheryl only has one BD per year (unlike HRH Lizzie Windsor, Queen of UK who has two!) it can only be because he knows that the month he was told does not have a unique date in it. Since May and June both have a unique date in them, these two entire months are ruled out.
Now on hearing that Albert has now ruled out May and June, Bernard can only possibly know which day in July or August it is because the day could not have been known before excluding May and June, but is revealed with this new info. That could have been either 16th July or August 15th OR August 17th. He would now know, but we still don't. Until Albert reveals that he does now know. He can only know because the month he knows to contain the birthday only had one date which would be revealed to him in this situation. Ergo 16th July...
Are you with me!!???
Also, for the record, everyone is posting this as "are you smarter than a small Singaporean child".... eerm... well we have heard this question was in their paper. We haven't heard how many got it correct! I guess we could expect 10% to have done so if they guessed ;-)