as you described that is what we did in Uber Zombie. We have a level, thats a big texture of the whole level. For collision detection we have a 'collision texture (c) tm)' that defines in color codes what's what. For example red is ground, green is ceiling and yellow is a wall. However this can be enything you like and works well for small levels.

If you want a big level i guess you can do the same with tiles.

(My website is currently down so I cannot show off any examples, but here are some screenshots: http://www.greatgamesexperiment.com/game/UberZombie )