There is some uncertainty about that, but since everyone called him "Chief", which up until then everyone just thought it was because he was the chief transporter operator, they decided to retconn him as an a non-com starting Season 6 to lay the foundation for DS9.
You can read all about it in his memory-alpha article:
http://en.memory-alpha.org/wiki/Miles_O'Brien#Problematic_Rank_History
O'Brien was said to be a non-com as early as "Family" in the fourth season when Worf's adopted father greets O'Brien as a fellow enlisted man saying something to "can you imagine my son becoming an officer?!"
As I recall that was considered a mistake at the time.
No, it was conscious decision because they wanted to show the world of the enlisted men in Starfleet. The rank pips are hard to argue for but at the time they didn't have enlisted man rank pips so maybe we could argue that the Lieutenant pips also meant some grade of non-comm and to know the difference you just had to... "know?" Or maybe it was acceptable to call that person a lieutenant?
I also, on some levels, felt maybe O'Brien may have been the COB of the ship.