Allow to change site logo without giving too many privileges
You could implement hook_menu_alter() to change the permission associated with that page, and use other permissions to decide which form fields should be visible to the currently logged in user. In this case, instead of using $element['#access'] = FALSE, you should use $element['#access'] = user_access('your custom module permission').
In the case you are only interested to allow some users to change the site logo, then you can use your custom permission for the page containing that settings form, and then use the "administer site configuration" permission for the form fields only the site administrators should see ($element['#access'] = user_access('administer site configuration')).

function mymodule_menu_alter(&amp;$items) {
  if (isset($items[$menu_path]) {
    // Use the following line if the access callback already used is not user_access().
    $items[$menu_path]['access callback'] = 'user_access';
    $items[$menu_path]['access arguments'] = array('your custom module permission');
  }
}

function mymodule_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  if ($form_id == $form_to_alter) {
    $form[$element_id]['#access'] = user_access('administer site configuration');
  }
}