1. Find and install a custom rom. if you don't know how make sure you do it carefully the first time.
this link will get you started. You can google for a more thorough guide.
To choose a rom, i would go with one recently updated.
here's one
These custom roms will probably take care of the features you want most, and it's more stable and faster than choosing your features independently (they don't always play nice together)
once you find a rom you like
2. get a good keyboard
I would use touch pal or diamond qwerty keyboard discussed below. For people who've tried and learned many input methods these seem to be heavily suggested. Once you get used to them they are often faster than switching to full screen keyboards.
thread on best input method
3. Open up google maps application (most likely included with your custom rom) Check how fast your gps locks. If you are unhappy, there are threads depended on provider i.e. verizon on how to tweak gps. At least with sprint people are able to get under 10 second locks.
4. make sure you have a good web browser. I use this set up.
link. It looks more complicated than it is, (especially if you don't have any problems), but it's very worth it. This set up has made my phone a lot more efficient at browsing.