Currently, commerce_checkout_form_validate() loads afresh the checkout panes that should be enabled on the current checkout page to validate / submit them. This means even if someone were to remove a checkout pane from the current checkout form using an alter it would still attempt to validate / submit the data. We should instead create a $form['checkout_panes'] array that stores in a value the checkout panes that get included on the form and use that array to process the validate / submit handlers. If someone wants to remove a checkout pane, then, they'd have to unset its array in $form and remove it from the list of checkout panes.