It's like asking for information on shooting yourself in the foot. The program memory is set up that way because literal geniuses worked out that it's better that way. They are even smarter than the guys who worked out that gun barrels should be easy to hold in a way that doesn't point them towards your feet.
You can do it on some Arduinos such as the DUE, which don't have quite the same wall between program memory and user memory like the AVR ones. It's still not a good idea, unless you're writing a bootloader.
Search for threads where people are trying to program their Arduinos over Wifi or SD cards. That's when it becomes useful and not foot-shooty. There's lots of information available there.