How to achieve more physically accurate motion in the game engine? I have a character with a very simple motion control: when I press W the character moves forward, with S they it goes backwards and so on. The problem is that unlike what is possible in the real world, releasing the movement button halts the character instantly; the same happens in mid air - if you were going forward and, mid air pressed the button to go backwards, you will, which us impossible IRL and, thus, not what I want. How can I make it so the character has to first slow down, before being able to switch direction (for large-ish turn angles)? 

The problem with the current suggestions is that it only partly fixes my problem, in that if I try to switch direction mid-air, it starts to move backwards with the same velocity it had when moving forward (i.e. the speed suddenly becomes negative), which is not what I want.
All of the answers here so far do not quite fix your problem. it is actually quite easy to fix. Radish Has the right idea (using linear velocity set to Add). This answer also expands (and says more clearly) what StealthyRobot said in his answer. (Although the numbers which he gave there do not work as expected)

First you need to use linear velocity with the settings local and add enabled.  (I assume you already have this) 



Now we can fix the overshoot problem. to do this increase the damping on the Translation for your character.



If you are using Torque to steer, also set Rotation dampening.

It also might be useful to view this question

Realistic Jet Flight

You can see it working here



If you had trouble following that, (hopefully you did not) or if you just want to see it working, feel free to take apart/play with the blend file.