First you need to correct your statement it is not getting January it is retrieving the current month. In a few days that exact same script will be getting February only.
Now first off if you need the output all in one query I would just take "month ='$month' &&" out of the query. and if you want it sorted by month just use an ORDER BY in the query.
$query = mysql_query("SELECT SUM(mc_gross) FROM paypal_payment_info WHERE year='$year' ORDER BY month, ASC")
But if you are looking to query each month separately you can use mktime() to get the different months.
$getmonth = mktime(0, 0, 0, 3, 0, 2009);
$monthname = date('F', $getmonth);
the out put of "$monthname" would be March
Of course it all seem a bit like over kill if you need to get each month just tell the script directly to get each month in stead of using the date() function. After all it is only 12 months I would be different if there were a 100 of them. You can put hem all in an array and then loop through there indexing to retrieve each one in succession.
Also just in case that little sample you gave use was a example script for the question I should point out that you can use mktime() to generate a date using variables.
$timedate = mktime($hour, $min, $sec, $mon, $day, $year);
I would recommend that you look up the date() and mktime() functions on php.net as you will find some very usefull examples of how to use them.