My 14 bit PIC of choice is the 16F1827, but they are a LOT slower than an Arduino (snip)
There's also the huge problem that the free versions of the XC compilers run EXTREMELY slowly and generate excessively large code, as they deliberately add lot's of spurious bloating to the code.
I'm pretty sure the 1827 can run at 32Mhz too - that's twice as fast (not a lot slower) than a typical Arduino (which are usually limited to 16Mhz or 8Mhz depending on the bootloader). The '27s are pretty stingy with RAM, but for driving an LCD should have enough memory. I'm surprised you found them to be a lot slower than an Arduino - I don't know of any (mainstream) Arduino board running at 32Mhz (most are '328 based with either a 16Mhz crystal or an internal oscillator set to 8Mhz).
Free PIC compilers are usually pretty terrible. The code generated by Oshonsoft, however, I've always found to be really tight. Long before I used the Arduino IDE I used to use Oshonsoft AVR simulator to dump code onto AVR chips; the BASIC complier created compiled code nearly a half the size that the Arduino IDE did. Oshonsoft even created (slightly) smaller code than SourceBoost C. I guess it's a trade off - Arduino does make things relatively simple, but at the cost of code bloat and processing speed (try writing an LED POV display using digitalWrite instead of direct port access and you'll get the idea!).
For larger LCDs you can always stream bitmaps off external eeprom; even a mid-range PIC should have enough programming space to store a font-table of upper and lower case characters (you don't need to store the entire font map in RAM, just 8-bytes per character and read each character from ROM as needed). A lot of colour LCDs use R5G6B5 (5-bits red, 6-bits green, 5-bits blue) which means 2 bytes per pixel; on a 320x240 QVGA display, that's 150kb to store the entire screen image in memory! For displaying a bitmap, reading each pixel from eeprom and displaying it on the fly requires maybe 4-6 bytes (2 for the pixel data, maybe 2 or 4 for the pointer to the data?).
I'm pretty sure a PIC 16F1829 will be more than adequate for driving your LCD.
And if it's using SPI/I2C so you can control the clock line, probably twice as fast as an Arduino would, if you crank it up to 32Mhz!