there is a circuit called "jdm programmer" that works. if you search
www.instructables.com for the term "business card" there is a jdm circuit there that fits onto a business card sized board - you need a serial port on your computer to use it. I made this circuit and it works perfectly, it is an icsp circuit (you need a seperate 5v power soruce when programming too if you have stuff plugged in already like servo etc..).
I use ic-prog to download it onto pics, and it supports the 18f4520 because ive used it before. You are best off setting the fuse bits in code(like bor, wdt, osc settings) because ic-prog doesnt work well with pic fuses, sometimes you can use check boxes in ic-prog but it doesnt show them all for the larger pics.