Thanks everyone for response.
I will go with this solution. Thanks again. 
My plan is to create my own program aka. BootLoader which will be only responsible for checking/testing and running newest plugin from SD card.
Each plugin will responsible for downloading new version and will be implementing interface ITestable
interface ITestable
{
bool Test();
}
Test method gives me opportunity to test new plugin against the hardware.
If test pass then new version will be current, if not then restart and run previous.
I (plugin) need to be sure that everything is working fine. Devices will be distributed across whole country and I will not have the possibility to connect the device locally.
If assembly will be wrong and device hangs then watchdog restarts CPU and loader use previous version.
That’s the plan. I hope it will work in practice. 
Regards