Once you off load that jazz, developers can concentrate on other stuff like UI and new data types (vector).
as far as routing is concerned it still needs a lot of progress, but there are some tools that are thought to make it in like grass' v.net which can calculate the shortest route between two points (considering one way streets), there is the possibility of displaying openstreetmap data on top of the raster map, but i wouldn't consider it stable in the sense of fully usable features.
concerning gps device support, gpsd does most units out there. i'm using a SiRFII BU-303 unit which works well in binary (prefered), aswell as in NMEA mode.
to all those thinking of using google * data, read the fine print, it's viciously forbidden to use that way