Hey Chrissie,
I have travelled around Thailand a few times now. You only really need about 3 days in Bangkok to see everything and if you only have three weeks then you probably won't want to spend anymore than 3 days there because it will be cutting down on valuable time elsewhere.
Best way to travel to the islands is my bus - they are very very easy to book once you are there, just try to plan a few days in advance each time so they don't get busy. Most buses are overnight so saves you time and money. Personally, I would travel to Krabi from Bangkok and maybe spend a few nights there - then get a boat to Phi Phi. Beautiful islands although they are getting really touristy and will probably be super busy at that time of year so book accomodation in advance.
After that I would make your way to Surat Thani on the east side of the country - don't stay here any longer than you have to. Get a boat to Koh Phangan for the full moon. The full moon party is great, and probably even more crazy at NY- just be careful. I would advise that you do not stay on Haadrin beach because it will be very busy and people can get stuff stolen. Instead choose accommodation further away, maybe Ban Khai etc. You can easily get a taxi to the party.
Then make your way to koh Tao island- by far the best Thai island and you shouldn't miss it out. Much better than Samui. Stay on Sairee beach.
This trip can easily be reversed if it fits in better with the full moon dates.
Alternatively, if you want to see a bit more of Thailand culture head to Chaing Mai up north. It is a beautiful city and from here you can see some of the jungle, trekking, elephant rides etc. If you choose to go here a night train is the best way to get there. Don't bother with 1st class ticket- 2nd class with air con is fine.
Enjoy. Thailand is a great place, you will have plenty of fun. Just be careful of your stuff- especially at full moon.
Hope this helps!