As you say, one solution is to calculate the function that describes the last movements of the player and then guess its next position.
This function can be calculated, AFAIK, with interpolation functions like polynomials and splines. Depending of the number of points you want to sample, the function degree rises (with 4 points, it's a polynomial of degree 3, a cubic one).
With this function you can predict the next value (it would be more or less accurate depending on the separation with the last point).
You can see an active example at
The problem here is how to make it useful for 3D, because in the applet you'll see that you cannot turn. Maybe it involves having an interpolation function for each axis.
I suggest you try to make this set of functions depending on time, not on pairs of axis.
pos_X (t) = prediction interpolation function in time t
pos_Y (t) = prediction interpolation function in time t
pos_Z (t) = prediction interpolation function in time t
Hope it helps