It may complicate the system, but an IMU (Inertial Measurement Unit) can greatly improve the performance of your speedometer, if added to the GPS receiver. That applies also for slopes.
An IMU consists in a set of accelerometers, gyroscopes and magnetometers (they work well together, but you don't necessarily need them all), which allow an accurate calculation of the heading of your system (the car in this case). The way in which this is calculated is often referred as AHRS (Attitude and Heading Reference System).
The benefit is immediately clear: knowing your heading helps greatly a GPS-based system in determining your movement direction and speed, which can be used to estimate your position over different points. The GPS receiver by itself is very noisy and inaccurate, and this results in your measured position to bounce around the real one in a radius of 1 to 20+ meters.
About the inclination
Using an accelerometer to determine the inclination of your car is far more accurate than calculating the difference in altitude, because it's just a variation in the direction of the G-force.
The downside of this is that you require a computating unit, which needs to make some heavy calculations. But I've made an experiment with an STM32 (Cortex M3) and we've (with other people) been able to calculate the heading every about 20 ms, without great optimization. So it's something that you can easily achieve with a comparable microcontroller.