I needed the same thing but I just added a PictureId field to the ProductVariantAttributeValue table and modified the View to show the thumbnails when it was a Radio Button List.
-Add PictureId to Nop.Core.Domain.Catalog.ProductVariantAttributeValue
-Add PictureId to Nop.Admin.Controllers.ProductVariantController's ProductAttributeValueCreatePopup methods
-Add PictureId to Nop.Admin.Models.ProductVariantAttributeValueModel with this tag to get the upload control:
[UIHint("Picture")]
-Add the field to Nop.Admin.Views.ProductVariant._CreateOrUpdateProductAttributeValue.cshtml
</tr>
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.PictureId):
</td>
<td class="adminData">
@Html.EditorFor(model => model.PictureId)
@Html.ValidationMessageFor(model => model.PictureId)
</td>
</tr>
-Add a string for the PictureUrl in Nop.Web.Models.ProductModel.ProductVariantModel.ProductVariantAttributeValueModel
-Modify the model creation in Nop.Web.Controllers.CatalogController to fill the Url from the PVAV's PictureId using the PictureService
-Finally, modify Nop.Web.Views.Catalog._ProductAttributes.cshtml to show the image based on the Url you have in the model.