hey
I dunno if this will help, but I just want to try and give some info behind the
1 palette per 2x2 tile block restriction. Hmm, it's all rather tricky, well at first it is anyhows, hehe

.
Anyhows for each 2x2 block of tiles, the upper 2 color bits are retreived from the Attribute Table, and the other 2 lower color bits are retreived in the Tile Pattern Table. Basically, the upper 2 bits refer to one of 4 palettes, and the lower 2 bits refer to one of 4 colors inside the palette (note, the first color of a palette is always transparent

).
So in other words, each 2x2 block of tiles share the same upper 2 color bits, which means
1 palette per 2x2 tile block, hehe

.
You might want to ignore this, as it may confuse you more. Anyhows each byte of the Attribute Table stores the upper 2 bits of each 4x4 block of tiles, and cause there are 4 sets of 2 bits in a byte, each 2 bits are shared across a 2x2 block of tiles

. It's quite hard to explain, but if you are really interested then you should read
Y0SHi's NES Documentation (not by me
), as it explains things and has some diagrams and such

.
Gah, hopefully this is not too technical or something. Anyhows I won't go any further.
But yea, that image
AdamAtomic posted sums up the restrictions very well

.
cyas