Good point. It's a tool you can grow with. You can start out easy, but it should still be capable enough for advanced stuff.
Some points I forgot to mention:
* It should be highly integrated. You shouldn't have to jump around in different tools, and the various parts of it should work more or less seamlessly.
* Readable language. The focus should be on readability, not compactness or some "computer science ideology orthodoxy". For example, I'm perfectly happy to sacrifice some of the more esoteric elements of OO (say, for example, operator overloading) for more readable code.
* When you work, you should be able to focus on the problem you are actually trying to solve. You shouldn't have to do a lot of extra "paperwork", "cleanup" or other things that detract attention from the core problem. You know what I mean, in some tools, you need to declare a class and implement various interfaces just to receive an event... Forcing the programmer to jump through such hoops detracts attention from the main problem, and, in the long run, causes solutions that are worse than they should be.
* Fast edit-compile-test turnaround time. Every extra second means less tests are made, and eventually bad code. (By the way, I loved the VB immediate Window, as it allowed me to test a function without writing any stubs or running it in a context. Just type (for example) ?GetPath("c:\dir1\dir2\file.ext") and get the result. Testing it with a few relevant test cases and you're done. One of the best features of VB.)
* Good supporting components/libraries. You do not want to re-invent the wheel, so if you, say want to access a database, play a video or send an email, you want components/libs that does it for you.