Deal with one sound at a time. A good technique for this is minimal pair work. A minimal pair is a pair of words which differ in one sound only - for example chip/ship, chop/shop, chin/shin, cherry/sherry. Choose words you can easily get pictures of. Show the students the pictures and teach the words. Have written labels so the students can concentrate on pronunciation without having to worry about remembering vocabulary at the same time. Then put them in two columns - ch words and sh words. Make sure the students understand that all the ch words are on one side and the sh words are on the other. Make sure the students can hear the difference (don't take this for granted) by first saying one of each pair at random. The students point to the correct picture. When they're doing this OK, it's their turn. They say one of the words at random and you point to the picture that you think they mean.
Absolutely! I had a group of 8th graders for a one-week summer "camp" last year, and one day I took out a chunk of time just to deal with pronunciation. Basically, I'd been taking notes the whole time as to what mistakes occurred the most, and then tried to figure out why. For example, t and s, and th and sh/dj often got mixed up because they occur in the same place in the mouth.
One way of pin-pointing problem areas is to read a rhyming poem together. For certain vowel problems (like when -ly becomes "-lay"), you can focus on the rhyming words. Once you've identified problem sounds (word-final l's, for example), start coming up with minimal pairs, and write them on the board or use pictures.
Something that worked well for me before was simply exaggerating the sounds. [th]--> [sh] was fixed easily enough, by instructing them to actually have their tongues sticking out between their teeth when they made the sound. For [l], my biggest challenge, I found that just by saying "lalalalalalala" or "elelelelelelel" for a long time helped them find the right location in their mouths. Just remember that with liquids like [l] and [r] especially, the sounds have different qualities when they appear in different parts of a word or with specific vowels.
To cement everything (as it were... I only had them for a week), every time we had a written activity or some such, I asked them to read them with pronunciation in mind... since they were reminded to think about it, most of them were able to pull it off pretty well by the end.
Since then, I've been recommending that students find a song, show, or movie they like. The problem with your students is probably that they don't get enough listening/speaking practice outside of class. If they're doing recreational English stuff that they enjoy at home, then they can fine tune all that stuff in their brains. I know lots of people who have improved their pronunciation in other languages just by singing along with pop songs.
Anyways, that's the stuff I've tried so far. I hope it helped at least a little bit. Something else I did that didn't really work was to draw a diagram of the mouth and explain all the tongue positions for different sounds. It's a little weird, so they were only able to understand me because I went back and did it again in Chinese.