Did you ever figure this out? Speed can be derived from Acceleration only if you have a know start speed.
You can assume zero (calibrate to zero before you pick it up) then calculate the speed based on the time interval at a given "G-force"
The issue is with how many times per second you can calculate the "speed" and at what speed the ball "thinks" it is at just before you throw it.
Ideally you would "zero" just before you throw to eliminate "drift" errors before the important event happens. (This is known as inertial navigation, and what most GPS use to fill in the blanks between GPS read events) Search for Inertial Navigation Arduino to get some examples of what works.
This can be done within the code to sense when the ball is moving just a little... (senses someone holding and ready to throw)
Then trigger a "calculate" event to record max G-force over time (during the throw) possibly time of flight, and then max G-force over time again (while the ball comes to a stop).
You can report the 2 force events separately or combine them to get a better average of the max speed. Using time of flight you can calculate distance travelled...
Keep in mind the ball will show near zero acceleration while in flight.
Accelerate when thrown
Constant Speed when in flight (minus drag etc., but comparatively constant)
Accelerate when stopping (decelerate of course, but to the system it is acceleration)
Good luck, sounds like a fun project.