It depends on the model of your car and how it gets its speed information.
If you've got a cable running up from the gearbox or one of the wheels (mechanical) then changing cogs is the only way (excluding wheel size changes).
If it uses a gearbox revolution sensor (D22s before about 2010) you could use a kit from Jaycar to modify the signal.
If it uses the ABS aggregate - the ECU takes the speed worked out for all 4 wheels and does a best-approximation based on all 4 inputs - you can't adjust it, get a GPS (smartphone will do).
The problem with adjusting the signal is that while your speedo needle starts to look better, the odometer starts to become inaccurate. What's actually at fault with a poor speedo reading is the accuracy of the needle's deflection. My own D40 reads about 10% higher than actual, but the ECU is surprisingly close to the money compared to the GPS and my odometer is only out by less than 50m in 5km (which means less than 1% error).
The best advice is to buy a good windscreen suction cradle for a smartphone, run some power up there, and get a reasonable Android smart phone and use some GPS software on it - almost all of them have an option to display the vehicle's current speed.