I'd like to take another look at what fluency is and is not. Fluency is easy to define, easy to confuse, but difficult to achieve.
Fluency is, essentially, the ability to speak like a native speaker. But that does not mean exactly the same as a native speaker. Speaking exactly the same as a native speaker is language mastery. So, a fluent speaker need not be perfect, nor have as large of a vocabulary as a native speaker.
So I'd better describe what I mean about speaking like a native speaker. I don't mean that you have to use slang and idioms. There's no requirement on what a person has to use to be considered fluent. Fluency is a term that refers to the way you speak, not the content of what is spoken. So even using simple words and basic phrases you can speak fluently.
Therefore, fluency is not a level of knowledge in a language. It is simply the ability to speak without hesitation, without moving your eyes around searching for words. It's also the ability to say what you want to say on the spot.
How do you know if you are speaking fluently? I think one of the key points to whether you are speaking fluently or not is this: when you are speaking, you know how the sentence you are speaking will end. Basically, that means your mind is faster than your tongue and your tongue can never keep up. Before you finish that sentence, you already know what the next sentence is that you're going to say.
How did I come up with that idea? Well, it's the problem that I have noticed with my Japanese speaking. I find myself so focused on what it is that I am currently saying that I haven't even started to think about the next part that I need to say. And that's often within the same sentence. I don't know exactly why I only focus on a small amount of words and I wait for myself to finish speaking before I start to think about how to continue. But you can see how this problem would affect fluency.