Structuring data in MongoDB for a to-do list type application
creating a sub collection should offer better read performance 
see http://docs.mongodb.org/manual/core/data-modeling/    

I think it would be a good idea to add an id to each subdocument so it is easier to access it (because from your schema you may have identical items)  

like:   

{
    username: "joe",
    password: "...",
    items: [
        subid:{
            text: "This is a task",
            completed: 1
        },
        ...
    ]
},
...


you can use subid = ObjectId() to autogenerate ids, or create this in your application. 

I don't think there is a problem with having thousands of items in a document just remember that the maximum document size is 16 megabytes.