I have two (almost) identical servers running the same query: the first uses the index while the second scans sequentially one of the (big) joined tables.
I dropped and recreated the second db from a pg_dump of the first getting the same results.
Fortunately the first is the production server and so, after some unsuccesfull investigation, I decided to forget the problem.