My (naive) guess would be that retail is a less-skilled job, so attempts by labor-groups to make themselves a controlled source of labor supply are easily circumvented by the readiness with which those jobs can be filled by nearly anyone. Whereas manufacturing jobs that involve some degree of skill are more able to corner the market on their own labor, and thus better able to negotiate from a position of power.
A few notions, in order from what I think is most likely/important to least:
1. Retail involves large numbers of part-time workers, making the workforce harder to organize.
2. An idle factory is incredibly costly to the owners. Factory workers have more leverage.
3. Employer hostility/union breaking efforts, you need only spend a few minutes on google to find some nasty stories about wally world or your least favorite retail chain.
4. Lack of identity: if the last few years have taught us anything, it should be that people in manufacturing clearly have integrated their jobs into their identity. You can see programmers et al doing the same thing right here on HN every day. I doubt most people in retail consider "working in retail" to be an important part of who they are in the same way factory workers or programmers might.
5. Men ("breadwinners") have historically worked in manufacturing and women have historically worked in retail, lack of focus on retail historically by organizers
A more interesting question that "Why is it hard to unionize retail?" is "Why is it hard to unionize programmers?" I don't have as many good answers for that one. #3 is the only one which applies to programmers.