I think the programming UI needs to be a bit complex to prevent accidental re-programming. If you can re-program by just clicking away, you will end up with garbled modes more often than you'd like. Especially with the time-switched-on kind of mode switching, where it doesn't matter for how long the light has been switched off. It's easy to end up in programming mode by repeatedly using the light for less than two seconds, let's say for finding the key hole every day. I think the light should behave completely different the moment it enters programming mode and changing anything must require some sort of timed action by the user. If he just keeps clicking or does nothing, programming has to be aborted. This may make programming a bit tedious, but how often are you going to re-program the modes?
As for the brown-out switching, from the programming point of view, the only difference between a normal and a brown-out reset is the set BORF-flag in the MCUSR register. You can check at start-up whether the flag is set and act accordingly.
I got the programming clip from ebay, but the vendor I got it from isn't offering them any more. Search for "SOIC8 clip", there are a few available from other vendors.