This is exactly what I was looking for. Just a few tweaks:
$options = array();
I changed to :
$options = '<option value="0">Please select an image</option>';
to provide an empty selection, otherwise the first image is already selected, and if it was saved, potentially the wrong image would be saved.
Also just to note that when adding the field to the widget, the image field ID should be specified, so if:
static $has_one = array(
'MyWidgetImage' => 'Image'
//when adding the field
$widgetImageField = new WidgetImageField('MyWidgetImageID', 'My Widget Image');
Cheers for sharing this!