AVR reprogramming in circuit wirelessly
The basic problem of a remote software update is how you force an (unwilling) target into reprogramming mode. The most sure way is to have an extra micro-controller that supervises the communication and can force the main controller into boot- or programming mode, or maybe even do the actual (SPI) programming.

ANY other solution is at the mercy of the software running on your system. If by accident, hardware problem (power failure) or sabotage etc. the software won't cooperate with the reprogramming, you are stuck. Whether this warrants the addition of an extra controller is an engineering decision.