I haven’t used TBB extensively, but my impression is that they complement each other more than competing. TBB provides threadsafe containers and some parallel algorithms, whereas OpenMP is more of a way to parallelise existing code.
Personally I’ve found OpenMP very easy to drop into existing code where you have a parallelisable loop or bunch of sections that can be run in parallel. However it doesn’t help you particularly for a case where you need to modify some shared data – where TBB’s concurrent containers might be exactly what you want.
If all you want is to parallelise loops where the iterations are independent (or can be fairly easily made so), I’d go for OpenMP. If you’re going to need more interaction between the threads, I think TBB may offer a little more in that regard.