Set minimum quantity in product
I believe there's a quiet simple solution using rules.
More specific based on the existing commerce_stock by default enabled rules :
- Stock: validate add to cart
- Stock: validate checkout
These rules have both an action "Set the state of the checkout process (called once per item)", preventing add to cart or checkout when the stock conditions are not met.

In order to check line item quantity with on product level defined minimum order quantities,  you can clone these rules and alter the rule conditions.
There's a way to implement a custom rule condition using hook_rules_condition_info().

Example implementation could be :

/**
* Implements hook_rules_condition_info().
**/
function my_custommodule_rules_condition_info() {
  return array(
    'minimum_product_qty_applied' =&gt; array(
      'group' =&gt; t('Commerce Line item'),
      'label' =&gt; t('Min. product qty selected'),
      'parameter' =&gt; array(
        'commerce_line_item' =&gt; array(
          'type' =&gt; 'commerce_line_item',
          'label' =&gt; t('Commerce line item'),
        )
      ),
    ),
  );
}

function minimum_product_qty_applied($line_item) {
    return _check_minimum_product_qty($line_item); //returns TRUE or FALSE
}