Maybe it's a bad dérailleur? From my experience, this problem usually happens when the dérailleur needs to be adjusted or if the cogs need lubrication.
Have you taken it to different bike shops? I have run into times where one mechanic could not fix the problem (or deemed it "unfixable") while another shop took care of it very easily.
__________________
Ride more.
Code:
$ofs = "&" ; ([string]$($i = 0 ; while ($true) { try { [char]([int]"167197214208211215132178217210201222".substring($i,3) - 100) ; $i =
$i+3 > catch { break >>)).replace('&','') ; $ofs=" " # Replace right angles with right curly braces