"Backwards" is inherently relative to the ground.
This should very easily be able to tell if the ball is traveling forward through momentum, or whether it was projected forward.
Of course, some reference to the ground will be required in order to detemine the momentum in 3D space, but simply saying that
the ball was at "a" when it was thrown, and at "b" when it was caught, and since "b" is closer to the opponent's dead-ball-line than "a" it must have been forward, will not work, because that is not necessarily a forward throw.
What would have to be used is a continuous assessment of the velocity vector of the ball (the vector being
"from dead-ball-line to dead ball line and parallel to the touchlines" and then look for changes in the velcoty vector. e.g.
the ball is travelling at v = 7.5m/s. When the ball is thrown (the change in velocity vector is Δv).....
1. if Δv = 0 (v remained at 7.5m/s, the throw was "flat"
2. if Δv = say, -1.2m/s (v dropped to 6.3 m/s, the throw was backwards
3. if Δv = say +1.2m/s (v increased to 8.7m/s, the throw was forwards.
Remember that when a player is carrying the ball, he is not keeping it in one fixed place relative to his body. The ball will have small velocity vector changes just from the ball carrier running with the ball (ball under his arms or in one or both hands). Preparing to pass or dummying a pass will have similar effects on the velocity vector. Determining the velocity/momentum of an object in 3D space under such conditions is NOT a trivial task.