Using CiviCRM 4.6.31 with Drupal 7, I have a contribution page that uses membership price sets, and for one of the options, no contribution or membership is created, no credit card transaction occurs, and yet a receipt is generated and no error appears for the visitor who fills out the form with their credit card.
The symptom was caused by a misconfigured membership priceset. Specifically, it had a price field with an assigned membership type that had been disabled.
If you want to check your database for a similar issue, you can use this sql:
select pf.label,fv.id,fv.price_field_id,fv.is_active,fv.label,mtype.name,mtype.is_active from civicrm_price_field_value fv left join civicrm_membership_type mtype on fv.membership_type_id = mtype.id left join civicrm_price_field pf on pf.id = fv.price_field_id where fv.membership_type_id > 0 and fv.is_active = 1 and mtype.is_active != 1;
If that sql returns any rows, you probably want to disable the corresponding price field values in the price field labelled by the first column of the results.