I am wondering about a few things:
1) what is happening in the fpscounter code? (Side note: usually a Class starts with a capital letter.)
2) maybe it would be faster to use setBackground and clearRect than to draw the black background?
3) maybe since all the drawing is occuring within paintComponent anyway, simply draw directly onto the graphics object instead of drawing to your buffer and then copying from the buffer to the graphics object? This also avoids the blitting mentioned by ra4king.
Note that you can pass the update's or paintComponent's graphic object to draw methods that you create for anything that needs to be drawn. For example, consider that you can define a public method such as: fpscounter.draw(Graphics2D). Then, in your update/paintComponent code, make FPS.draw(g2) a statement. (Side note: usually an object name starts with a lowercase letter.)
I haven't tried drawing directly on an Applet, myself. I've only used JApplet and drawn on a JPanel within that. It's not necessarily the fastest way to do things, but Java is fast enough that even so I've gotten good fps rates.