Try..
register_setting( 'mygroup' , 'site_logo' );
and..
settings_fields( 'site_logo' );
http://codex.wordpress.org/Function_Reference/register_setting
You can place your settings field onto one of the options pages as you've done here..
add_settings_field('site_logo', 'Logo', 'site_logo_callback_function', 'general', 'default');
..however, this doesn't mean your registered setting (eg. register_setting) can be appended to an existing group of options, your own registered settings have to use their own group, they can't use an existing one..
eg.
register_setting('general','site_logo');
I can understand how it could seem that way, but the add_settings_field function is just a convenience thing for adding to existing sections and options pages, however it doesn't merge your custom options with existing groups of options, custom options are registered and stored seperately...
Not sure if that came across clear, but i hope you understand what i mean.
If anyone thinks or knows differently to what i've said above, they are welcome to correct me, that is functionality as i understand it to be, so it's quite possible my understanding is not accurate... all the same, try what i said and see if it helps... ;)