I asked something similar the other day on a post with regards to working out how good/bad my code is. I got some great feedback.
http://news.ycombinator.com/item?id=4073866
On a broader basis there are a couple of things which I think act as an indicator.
1. Is you time spent on Stackoverflow and thumbing through books inversely related to the time you have spent on a topic. When we start out on a new language/library we spend a lot of time in the docs and checking things, over time you should start to notice that you begin spending less time in the docs and more time coding. Eventually you will notice that you can start to answer some questions on Stackoverflow on the topic. At this point I would say you are good at the chosen topic.
2. You stop looking for snippets of open source code or plugins and find yourself naturally leaning towards doing it yourself. This isn't always the correct approach for a given solution but it means you are familiar enough to "get stuff working" from first principles. This probably isn't expert level but it is certainly at the very familiar level which is good enough in most cases.
3. You begin to dig deeper into how the chosen topic works and dissect it to the point where you notice flaws and see where you can make improvements. I think this is the expert level and is very time consuming to get to and may mean you have reached this level at the detriment to your broader knowledge - which is fine if that is what you intended.
I've used coding analogies for this but I think it is basically the same in every field.
I like Valve's ethos of finding T-shaped people, nice and broad across a lot of topics and then they go deep on one.
Just my 2 cents