Honesty is the best way. When you admit a student, one of the things you dread is if you find out someone is not what you thought. The issue is not easy to deal with of course.
If you think someone has a weakness, it should be mentioned. The first thing I think one can do is to point out that it is ones own opinion and possibly also describe the circumstances for why the weakness has become evident. The main point is provide the recipient of the information with as much information as possible to make a well-founded decision. After all, a persons positive traits are easy to describe and it is only the negative that cause problems.
One aspect that weighs heavily is if you would take on the person yourself, and if so, would you then deal with the weakness in some way? Provide possible solutions.
If a candidate has a weakness that you think may affect the persons ability to be considered, you should probably bring it up with the person. This can of course be very difficult and may result in bitter feelings but the question is, are the weaknesses something that can be compensated? If the person does not know about them, then the situation will seem inexplicable when he/she gets a rejection. A constructive discussion may make it possible to elaborate more in a letter to defuse the negative aspects.
In the end, writing negative aspects about a person is very difficult but it is also vital that a letter of recommendation has value. You may not be the only person writing a letter so the picture you provide may be one of many that has to be weighed in at the other end. If the person ends up not being appointed, you cannot take it personally as long as you have tried to provide an as objective appraisal as possible and that includes both positives and negatives. I have included what I sometimes have thought were damaging (but true) comments in letters and found the person was appointed despite them. I have then carefully explained why I think the way I do and tried to see how the negatives could possible be worked around. I have never written a letter where I had to just say, don't employ this person. I have then avoided the task altogether.
So, in summary, be honest, be objective, be constructive, and the opinion will be much valued by whoever reads your letter.