ptrv/gpx2spatialite does this remarkably well, saving timestamps for all points and deriving speed and length data for tracks. It also won't import duplicate tracks, so you can feed it a huge pile for GPX files and it will munge them appropriately.
Update: usage examples, as requested:
Initialize new database:
gpx2spatialite_create_db db.sqlite
Add a single gpx file:
gpx2spatialite -d db.sqlite -u user file.gpx
(If username user does not exist in the database, will query if you wish to create it. The database is built with tracks/waypoints/routes assigned to one or more users.)
Add all of the gpx files in folder/:
gpx2spatialite -d db.sqlite -u user folder/
Usage: it's a spatial database, with table tracklines holding the tracks as polylines, trackpoints containing the individual points (with time, elevation, etc), and waypoints for any defined waypoints. There are also numerous indices, some world city definitions and possibly also embedded SLD styling information I haven't yet explored. As a trivial example, here's a map of how my hometown (Toronto) is defined through ~7 years of track logs:
By using lines at 75% transparency, the most frequently-travelled routes become darker.
Although it doesn't solve the problem with QGIS, you can, as mentioned in a comment, use DNR Garmin (DNR GPS) to convert your ESRI shapefile to GPX. This is what I do most of the time.
It is very simple. Just open the shapefile with the program, select the Id field if prompted, then export (or save as) to the desired format (in your case, GPX).
Best Answer
To elaborate on HasT's answer, use GPSBabel to translate the GPX file to another format; I prefer to use CSV which appears as "Universal csv with field structure in first line" in GPSBabel's format dropdown.
Then in QGIS make sure you have the Add Delimited Text Layer plugin enabled and use it to add your new csv file to your map.