I love self-checkout; I'm faster than most cashiers. Costco implemented it several years ago, took it out, and have now re-installed self-checkout registers. They must have figured it was cheaper to write off the losses for self-checkout scofflaws than to employ five additional cashiers.
I couldn't knowingly skip scanning items; that's theft. If I'm the unintended beneficiary of an error that gives me a free item, I do what @shirokuro did, namely get a store employee to help me straighten it out. In the days of cash, if the cashier gave me more change that I was supposed to get I always gave back the extra. I figure I would grouse if they shorted me so it's only fair to return a "bonus". I also figured they might be on the hook for the shortage when they counted their cash box when they came off the register.
At our Mariano's each self-checkout register has a camera. I've scanned something, put it in the bagging area, and had the display tell me to remove the item because it thinks it hasn't been scanned. I've called the employee over and they will look at the video footage to see what I did to be sure I'm not cheating them. In our case it 's always how we timed putting the item in the bag. I don't know how commonplace cameras are.
For the people who are doing the "scan the cheap thing and substitute a more expensive item of the same weight" trick, I can't imaging there are a ton of them. Seems like way too much work to plan and execute for the reward.
All of that said, it really boils down to a) peoples' fundamental honesty and b) their motivation. There are some people who steal just because they think the can get away with it and there are others whose sense of survival kicks in and they steal in order to survive. If you don't have enough money to feed your kids you may just take what you feel like you need. I could be wrong but I think there are way more losses due to the first group rather than the second.