Define a Panels visibility rule programatically
I think probably that is due to the missing 'summary' key from your '$plugin'. A simple access plugin to check if the current page can be defined as :

$plugin = array(
  'title' =&gt; t('Front page'),
  'description' =&gt; t('Is this the front page.'),
  'callback' =&gt; 'ctools_front_ctools_access_check',
  'default' =&gt; array('negate' =&gt; 0),
  'settings form' =&gt; 'ctools_front_ctools_access_settings',
  'summary' =&gt; 'ctools_front_ctools_access_summary',
);

/**
 * Settings form for the 'by parent term' access plugin
 */
function ctools_front_ctools_access_settings($form, &amp;$form_state, $conf) {
  // No additional configuration necessary.
  return $form;
}

/**
 * Check for access.
 */
function ctools_front_ctools_access_check($conf, $context) {
  if (drupal_is_front_page()) {
    return TRUE;
  }
  else {
    return FALSE;
  }
}

/**
 * Provide a summary description based upon the checked terms.
 */
function ctools_front_ctools_access_summary($conf, $context) {
  return t('The front page');
}


The canonical reference of this could be found in the access plugins defined in the ctools module itself.