I've written a bootloader for tiny AVRs that needs only 258 bytes of flash. It's written to be used as a library, so adding a single include to your main enables the bootloader. This adds a call to the bootloader in .init1 before main. If the bootloader times out, it returns and execution continues from .init2. When the bootloader main loop is run, the arduino/stk500 quit command will jump to the reset vector.
picoboot-lib will be integrated into the next release of picoCore.