I've kept on coming across the term "bodyshop" in terms of a programming job/environment but despite googling I can't find out what exactly this is referring to? Can someone please enlighten me?
It means an employer that is not interested in improving the people they hire - a place that will not train people but expect them to train themselves on their own time.
These are places that are more interested in having the personnel so they can bill their clients per person (hence - body shop) than the actual quality and capabilities of the people.
In short, a body shop is a place that is more interested in billable hours than quality people.
Basically it means a company that hires programmers only to lease them to clients on a per-hour basis. The programmer gets a steady salaray (lower, often much lower that what they'd get as a freelancer), possibly some benefits, and doesn't have to actively look for projects. The client has someone to go to if they have a position to fill but can't find anyone qualified and/or don't want to hire permanently.
Such companies usually call themselves consultancies, but the jobs usually are grunt work, often in legacy projects, with little chance for any actual consulting to happen.
The term also implies a company that has no interest in optimizing anything but the difference between the employee's salaries and the hourly rates paid by the clients.