Conditional widget_form_callback

You need to get the array of sidebars and their widgets with wp_get_sidebars_widgets(), then check if the current widget is in the 'footer' sidebar:

$sidebars = wp_get_sidebars_widgets();

 if ( in_array( $widget->id, $sidebars['footer'] ) ) {

      /* Display form fields here */
 }

Update:

There is one caveat to this, which you have discovered. The widget form is output before a new widget is assigned to a sidebar, and is not reloaded until the widget settings are saved. If you wish all of the settings to be immediately available, you will have to solve this with either CSS or JavaScript. I think CSS will be the best way to go, if your footer sidebar will always have the same numeric ID (this should be true if the number of sidebars isn’t dynamic – though people could add extra custom sidebars, I suppose).

Basically, if the widget isn’t hooked to any sidebar, you output your form input, and hide it using CSS unless it is moved to the correct sidebar.

You can perform the check like this:

if ( '__i__' == $widget->number ) { 

    /* This widget isn't hooked to a sidebar yet. */ 
}

So your complete check would look something like:

$sidebars = wp_get_sidebars_widgets();

if ( '__i__' == $widget->number || in_array( $widget->id, $sidebars['footer'] ) ) {

     /* Display form fields here */
}

Example of the CSS, assuming that the footer sidebar will always be number 3:

<style type="text/css">
.show-if-sidebar-3 {
       display: none;
}

#sidebar-3 .show-if-sidebar-3 {
      display: block;
}
</style>

You could add those styles to your admin stylesheet, for example, and then add the show-if-sidebar-3 class to the paragraph tag that you wrap the extra fields in like so: <p class="show-if-sidebar-3">

I can’t really think of an alternative, unless you want try using JavaScript to detect when a widget of this particular type is added to that particular sidebar, and immediately reload the form. That’s much more complex though.