It is not necessary to know the product size, shape, weight, colour, ethnic origin, or religious views.... nor do you need to read barcodes, pieces of reflective tape, or anything else "attached" to the product.
OP wants to detect a "jam" of products on a conveyor system...
Seems to me he needs at least two sensing locations, assuming the "jam" always occurs at the same place. If it doesn't he needs more sensing locations.
It really is simple - if the product stops flowing because of a jam, there will be somewhere where product is detected (photo-cell or proxy), and somewhere downstream where it isn't.
A simple combination of suitable sensors and timers in the logic should be able to detect that things have stopped moving, even with no gaps in the product..
Having said that, I have to agree with fixing the problem, not the result. Find out where jams occur and try to deal with them mechanically, software cannot "cure" the jamming, only detect it.
Jamming is almost always caused by mechanical deficiency, not by control software. Jam detection should always be added anyway, even with a mechanical system that appears to run flawlessly, you have to play the "what if" game when programming the control system.