I've been working through the same sort of problems as illustrated in this thread for the past two days and I've some findings that may be useful to others.
First of all, you need to know what driver chip your board is using. The Adafruit library is *not* sufficient to identify every chip, so the best starting point is R Jennings' "ugly bit basher" that reads raw values from the most likely registers. It will almost certainly find an identifier for your chipset. I put a copy at http://www.ivydene1.co.uk/TFT-reg-read.ino - I hope that R Jennings is content with the attribution for his hard work.
In my case, I found I had an ILI 9335 driver and was able to google for it. I couldn't find a library that was specifically for that chip, but it seems to be similar to the 9325 and 9328 chips.
So secondly, I needed to find a library that would initialise the display properly. If you have a white screen or odd banding, you know that the display did not initialise properly. I tried the Adafruit library and added a line to the "graphicstest" example immediately after the line that reads the id (probably line 60), which simply overwrites whatever was returned with a fixed value like this:
identifier = 0x9325;
Then I uploaded the example and observed whether it worked. The 9335 produces a display with the 9325 and 9328 values.
I also worked through each of the values that the Adafruit library recognises: 0x9325; 0x9328; 0x7575; 0x9341; 0x8357. Only the first two gave me a result with my chipset. If you don't have one of those chips, you may still be lucky enough to find one of those works for you, as I did.
Now, I still had a problem: the entire screen was inverted in the Y-direction, but at least I had got past the initialisation. So the third thing is to correct the inversion of the display. I can see from the threads I've read that different displays may invert X or Y or both. There's an interesting thread at http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/ which discusses solutions to these sort of problems, and the solution provided by Mike McCauley at comment 41 proved to be the key to solving my third problem. Unfortunately the library and examples he provides did not initialise my chipset properly, but from investigating the Adafruit library code at "Adafruit_TFTLCD.cpp" I was able to see the sequence of instructions needed to properly initialise my display. It was then just a case of replacing the contents of the PROGMEM array at approximately line 567 in Mike's "TFTLCD.cpp" with those I found in "Adafruit_TFTLCD.cpp" for the 9325 around line 123. I also had to add lines:
#include "registers.h"
#define TFTLCD_DELAY 0xFF
around line 33 as well as copy the registers.h file from the Adafruit library to Mike's library, to save me having to translate all of the Adafruit defined constants for the registers back to numeric values as Mike had done. I've uploaded my patched version of Mike's "TFTLCD.cpp" library at http://www.ivydene1.co.uk/TFTLCD.cpp if anybody wants to see what I did. Mike's library is big because he has all of the graphics primitives inline, so if you use that, you don't need the Adafruit GFX library separately.
By the way, if your text is inverted in X or both X&Y, read the comments in Mike's "TFTLCD.cpp" around line 50 and comment in or out the #define INVERT_X and/or #define INVERT_Y lines as needed.
In summary, first identify your driver chip; then get a library that will initialise the display; finally sort out the text orientation for your display if needed. I hope this may help others.