What are the largest FIR filter lengths used in practice?
All applications are bound to some notion of accuracy of the magnitude/phase response.

Given a FIR is a polynomial approximation to a desired magnitude and phase response:


The lower the number of taps, the poorer the approximation, but the
lower the computational overhead.
The higher the number of taps, the better chance you have of a more
accurate approximation (depending on your design approach), but the
higher the computational overhead.


There's not much more can be said on the finer points unless you ask a more specific question at which point there are many people cleverer than me in this forum who will be able to give you some good pointers.

For instance FFT makes high order FIR filters possible as it is computationally efficient and has good numerical properties. High tap FIR filters aren't rare and I can vouch for them being used in audio (64K and 128K taps are common for some purposes).

Using fixed point arithmetic usually implies you are computationally bound by a chip without an efficient floating point arithmetic unit and the numerical properties of fixed point arithmetic tend to limit the accuracy of high order filters. So high order filters are not aided by fixed point arithmetic.

UPDATE, based on question in comments about upper limit on taps for fixed point:

I've only ever implemented FIR filters using floating point arithmetic, but I have written fixed point routines (for non FIR related applications) on a 32-bit 16 instruction RISC architecture in assembler. It's possible to get any precision you want by extending your arithmetic across words at the expense of clock cycles i.e. you can improve your precision in fixed point if necessary, but at some point you will hit the limit of your processing capability. So you ideally need to say what chip you're using, what language/libraries you're going to use, show us a graph of your ideal magnitude/phase response, what latency you're happy with and what input/output rate. It's impossible to give hard limits without some real constraints. It might be another question on SO perhaps...