Thanks for all your answers guys. We've finally found the problem. It seems that the program just stacked all the memory it could until it found it didn't have any more left on the system, we found that out by checking out the program just growed and growed the more time we tested it... probably when it reach the limit it would free some memory so it could still run.
Finally we realized that with the "SetWorkingSet();" function we could limitate the memory used by the game, we just tried a few with really complex levels until it didn't crash and it turns out that you can play it perfectly with about 8mb, and since C# takes quite a lot of memory just creating the form, the game itself doesn't really spend much memory.
I've also tried the DXT5 textures and for those who are interested in perfect 2D graphics with different levels of alpha this isn't very good as the textures loose a lot of quality, but the ARGB24bits works just fine.
We are considering moving to C++ for later projects using different graphic libraries.
thanks a lot again for your answers, soon we'll post around here a new C# custom tower defense game with a level editor, wich happens to be this game! it's in spanish though I don't know If we'll translate it or not but it is pretty easy to understand with a proper readme fil