How to keep checkbox checked after form submit
First you need to specify #default_value to your element, Then if you are going to save your data in some place, then load it and use it as your element default_value, if you are not going to save it then you can use form_state on that but remember to set $form_state['form_rebuild'] as TRUE in submit handler, a sample code will be like this :

function my_module_form($form, &amp;$form_state) {

  $form['terms'] = array(
    '#type' =&gt; 'checkbox',
    '#title' =&gt; t('Your checkbox'),
    '#default_value' =&gt; isset($form_state['values']['terms']) ? $form_state['values']['terms'] : array(),
  );
  $form['submit_button'] = array(
   '#type' =&gt; 'submit',
   '#value' =&gt; t('Click Here!'),
  );

  return $form;
}
function my_module_form_submit($form, &amp;$form_state) {
  $form['terms']['#default_value'] = 1;
  $form_state['rebuild'] = TRUE;
}