This kind of code should be much faster in SFML 2. If you want you can already try it from the SVN repository.
You should also cache every single tile of your screen, so that your rendering loop is reduced to calling Draw on each tile (changing a drawable attributes all the time has a small cost).
If it's still too slow, you can try using sprites (in this case you'll have to generate the glyphs yourself with an image editor), they may be faster than 1-character texts.
In SFML 2 it may even be possible to use a sf::Font and sf::Sprite together; that should be a better strategy than using sf::Text in your case.
But try SFML 2 first
EDIT: oh my god, I didn't see that you were creating a sf::Image on the fly everytime that you want to draw a colored square.
this is insane. Rather use a sf::Shape, and better: create it once and store it!