While trying to write a re-make of Paradroid for the GP32, I started out by writing some groovy 2D map making tools in C# - partly for the practice, but also because I'm a fussy bugger when it comes to tools and I like things to work the way I want them to!

Although the game is on pause for now, the tools are in a fairly complete state - as well as being fairly simple to extend, should anyone else want to take the source code and adapt it for their own 2D homebrew title.
I split the task of building a 2D level into two operations - creating a Tile Bank and the level designer itself. A common C# assembly, ParaCore, contains all the shared code and UI (like the tile bank display)
The Tile Bank editor is shown below. It loads a tilemap: a large grid-segmented image containing all the graphics for a given game or level. The user can then slice this into lots of smaller components, picking out the features of the image that constitute a single building block for the level editor. A single floor tile might just be a 1x1 block, the large graphic for a wall-mounted computer might be 4x3, for example.

I also added the ability to define which tiles are impassable (collision tagging, shown as highlighed in blue, above). Tile banks could be grouped into logical sets, arranging different types of tile (eg. per level, or colour scheme, etc).
These tile descriptions are then loaded into the level editor.
The editor comprises of a snap-to-grid zoomable display and the tile bank display window. The level designer chooses items from the tile bank and plonks them into the grid window. Easy!
Obviously there is a level of functionality missing here - namely enemy / player placement and object / pick-up authoring. The source code is fairly clean, however, and all the donkey work of graphical map editing is done and working quite nicely.
The source tile graphics you might recognise - to prototype the tool and test out the authoring, I built a large tile map using graphics scraped together from playing a lot of Alien Breed on the Amiga.
This is included in the download, although it is for test purposes only, Team 17 probably wouldn't be too thrilled if you ended up releasing a game using their graphics.
some larger screenshots - click to enlarge
You can download prebuilt Paratools binaries here. You will need the .NET Framework 2.0 installed for this to run. Download that from Microsoft here.
You can download the source code, tile map and sample tile banks here. Built with .NET 1.1 and VS 2003, tested on .NET 2.0 and VS 2005. Please note that the source is covered by the GPL licence, included in the package.
I'd be fascinated to know if you decide to use the tools or any of the source in your own game, drop me an email if so!