Since we are B2B, we very rarely have leads with personal email addresses. When they do come in, you can create a custom boolean field (ex. "free email address") that populates if it is a free email address.
(lead is created
data value changes: email address)
email address contains: @gmail.com, @yahoo.com, @hotmail.com, etc.
change data value: free email address: true
Then you can filter these leads appropriately. Also create an offboarding campaign to make "free email address: false" when the new email address does not contain @gmail.com, @yahoo.com, @hotmail.com, etc.
You can also restrict free email addresses from filling out your forms: http://developers.marketo.com/blog/restrict-free-email-domains-on-form-fill-out/