How can I make it so that customers who buy my arm based product can easily update the firmware?
STM32 has a bootloader built in called Device Firmware Update. There are a couple of app notes that detail its operation. AN3156 explains the protocol, and AN2606 details the operation and hardware considerations. ST provides a PC tool that users could use to update firmware, alternatively a DLL that could be built into a PC application.