I did a research a year ago, and this is what i came up with:
The expiration day on credit cards is always in digits (at least in the US). I also inspected some of the popular e-commerce sites in my region, in order to determine if there is a convention on the subject.
I chose drop downs for both month and year.
The month drop down includes both the month digit and month abbreviation. Even though credit cards use only digits, including the month helps users know they are in the right field (i omitted the labels).
The year drop down includes options for 10 years, starting with the current. Even though credit cards usually use two digit years, i included all four digits.
The default values of the drop downs are "Month" and "Year".
The current design has been used in a production environment for about a year.
EDIT
The following article offers some useful suggestions, which are supposedly backed my usability tests.