I started out with the 6502 for a little bit, and then quickly moved on to the Z80 which is a fantastic processor - but because it's so easy to use I find it allows you the opportunity to learn bad programming habbits ;-)
I then moved on to the PIC and, because I've not yet found a situation where a PIC wasn't able to do a job for me, I've not bothered to change. For this reason, I couldn't possibly comment on AVRs.
One thing that really does bug me when I'm writing programs for the PIC, is the register bank thing. The PIC uses the same memory address for different sets of registers, except that you have to select a register bank before you address them. For example, the PIC 16F84 uses 7 bits to express the address of a register. The address for Port A is 0x05, and the address for the data direction register for Port A is 0x85. These two registers are exactly 0x80 away from each other!
Of course that would never work on a 7-bit address system, so the PIC uses register banks. You select the bank you want to use by setting a bit in the status register, and in this case if you want to write or read data from Port A you use bank 0. If you want to set the input/output settings of Port A you use bank 1. This means that you have to set or clear a bit in the status register every time you want to write to or read from registers which are in different register banks!!!
The whole process can be quite confusing for the beginner, especially if you mess it up because you'll spend ages wondering why your program doesn't work (I've been there and done that).
That's my only real bug-bear with PICs. Other than that I've found them to be excellent microcontrollers, and it doesn't take long to get used to the register banks really. There's a huge resource of support for them on the internet, including loads of application notes from Microchip's own website. And there are free compilers available.
Brian