It's actually not that hard to do. All you need is a microcontroller, a gps receiver for low power electronics, and a cellular modem (to transmit the signal every X minutes.)
For an example of the hardware you need,
- A Raspberry Pi because it's basicaly a cheap computer that you can run Linux on, not that linux is needed, there are 8-bit processors that can do this, take a look at Sending SMS via and Arduino, but the Raspberry also has USB ports and some driver support so you can get it built faster.
- For the GPS receiver, there are a ton of options, I like somthing like this GPS to USB because you can mount the antenna away from your equipment (this makes a BIG difference.) Once again, if you want this to be more of an embedded solution you could use a GPS to Serial Receiver with an 8 bit processor controller.
- To transmit the coordinates via the web or sms, etc. you would want a USB cell modem. There are serial ones out there, but they are getting harder and more expensive to find.
- A battery power supply or a regulator to provided power from a vehicle etc.
That's about it. You would have the controller get the GPS coordinates every X minutes (you probably don't want to get more than 1 a minute as this will use more power and won't really help much with the detail.) Once it has the GPS coordinates all it has to do is send them via the cellular modem (messaging rates may apply,) to your web server. Then your server could map the current location and do the math to calculate speed, heading, etc. There is a lot of available information online about how to do all this.
The main thing you probably need to think about is the power requirements needed, and is this a hidden unit or just a personal/company tracking system. If it is hidden, it will probably need a battery, and you would be better off going with an 8 bit processor since that will reduce the power requirements/battery life and size. Also you may want to log coordinates if for whatever reason the unit was unable to connect to the server via the modem (out of cell range, etc.) so some form of memory may be needed. You could do this in eeprom but I wouldn't because of the limited rewrite lifetime.
Hope that helps get you started. I made a similar project about 6 years ago, and the biggest problem I had was I used a GPS receiver that was built into my unit, so the entire thing had to be mounted somewhere it could get signal, instead of just the antenna, and this made it hard to position anywhere convenient.