See If I include a Forgot Password service, then what's the point of using a password?. That question considers whether we can use a "I forgot my password; please email me a reset code" function as the main way of logging into your account. The issues are similar.
In particular, the primary drawback is that, from a usability perspective, it may be annoying to have to wait for the email to show up each time the user logs in.
From a security perspective, it is (in my opinion) a reasonable approach, though not perfect. The primary security drawback is that the user's email account becomes a major risk: if the user's email account is hacked, the attacker may be able to gain access to the account (e.g., if the user uses the same password for the email account and for their account on your service).
Moreover, the way you handle password reset becomes security-critical. If you follow the standard practice of just emailing the user a reset link, then you've created a major weakness in your system: this makes it easy for an attacker who has compromised the user's email account to then steal the user's account on your service, with no guessing, by using your password reset process.
By the way, this is not really 2-factor authentication. Don't expect this to provide the same level of security as true 2-factor authentication, like Google's SMS/voice verification. For instance, if someone gets access to the user's computer (e.g., the user's computer is stolen; the user's roommate is playing tricks on the user), then that person will be able to get access to the user's account on your service.
P.S. See also What problems does this “recover account” procedure have?, Password sent via email upon registration, Email forgotten password or send reset link, both just as insecure?. And I recommend using SSL sitewide if you can.