Why was Zachariah punished while Mary was not? The gospel of Luke states that when the angel Gabriel appeared to Zacharia and told him that his wife Elizabeth would conceive John the Baptist, Zacheria doubts the prophecy and so is temporarily struck dumb till the day John would be born. 

However even Mary expresses doubt at Gabriel's word that she would conceive Jesus. Why then is Mary not punished for doubting God's word unlike Zachariah?
There is a subtle difference in the responses of Zacharias and Mary.

Zacharias says, in Luke 1:18 (NASB)


  Zacharias said to the angel, “How will I know this for certain? For I am an old man and my wife is advanced in years.”


Zacharias is essentially asking the angel, "How do I know I can trust you? Prove it."  Furthermore, Zacharias's only basis of doubt was his and his wife's old age.  This was a miracle for which Biblical precedent had already been set (for Abraham, for example, in Genesis 18)

Mary, on the other hand, asks in Luke 1:34 (NASB)


  Mary said to the angel, “How can this be, since I am a virgin?”


Mary is not asking "How will I know" (i.e., she's not asking whether she can trust God's word) - she is asking how it can be, in a spirit of amazement and wonder, rather than a spirit of doubt.

Also, note that in Luke 1:38, we read:


  And Mary said, Behold the handmaid of the Lord; be it unto me according to thy word. And the angel departed from her.


Mary may have expressed doubt by asking how this would be initially, but once she was given an answer to her question of how it could be, she did believe.