One of the best ways to improve is to make a game that zeroes in on your weaknesses and forces you to improve them. There's nothing like a little fun competition to bring out your best!
For example, suppose you have a weak backhand counter-drive. Here's a game I've played with students for years, spotting points to make it competitive. I put a box, towel, or other object around the middle of the table so that my opponent has to aim for my backhand to keep the ball in play. Then we play backhand-to-backhand games, where either of us starts the rally by serving straight topspin, then we go at it, backhand-to-backhand. If the ball hits the box or towel, or goes to the other side of it, then they lose the point. If a player plays anything other than a backhand drive, they lose the point. The rallies become fast and furious - and the backhands improve!!!
Need work on your loop or block? Play a game where one player loops everything, the other blocks. You can do this either all crosscourt or all down the line (using a box or towel to block off the target area, as with the backhand-backhand game), so players know where the ball is going and so can focus on developing the loop or block. (At the advanced levels, you can do this where players can loop or block anywhere.) Alternate version - the blocker is allowed to smash or counterloop if he sees a weak loop. Another alternate version - both players battle it out counterlooping.
If you need work on your pushing, then play an all-pushing game with someone. Server serves backspin, and play out the rally, backspin only.
Want to learn to push short and low? Here's a great way to do that. Take turns serving short backspin, with both players pushing short. (Pushes can go anywhere.) If either player thinks the push is going to go long (i.e. wouldn't bounce twice if given the chance), he lets the push go, and if it's long, he wins the point; if it bounces twice, he loses the point. If a player pops a push up, the opponent is allowed to smash or flip kill it, but must win the point on one shot; if the opponent returns it (even by lobbing), then he wins the point. And, of course, if a player misses his push he loses the point.
One of my favorite games is the serve and attack game, which forces you to be very aggressive on your serve. Play a regular game except both players are allowed only two shots after the serve to win the point. There's nothing like the knowledge that you have to follow your serve with an attack to focus your mind on doing so - and thereby learning effective serve and attack patterns. It also developed your receive as you look for ways to stop the opponent's attack on his serve.
So examine your game, decide what weaknesses need work, and invent a game that'll force you to turn this weakness into a strength out of sheer competitiveness.