Since the CPU is halted during reprogramming of the boot loader area a loader could theoretically reload itself :!: However there is lots of potential for getting into trouble.
My thoughts are to have 4 sections of flash, starting on page boundries.
1. Main program
2. Data tables
3. Secondary loader
4. Primary loader
Where the primary loader reloads everything except itself.
The secondary loader is an abreviated one whose only function is to reload the primary loader.
Any comments :?: