I've been offered a job on the spot, and I've waited 6-8 weeks after interviews to get an offer.
Having worked as a recruiter -tThere are many things that could be going on at the company, and the recruiter is not required to reveal, and sometimes restricted from revealing any of it (if they even know). A recruiter gets paid when a job is filled, so they are motivated to make offers, but they are not in control of the process or the decision, they only communicate what they are allowed to. The recruiter is telling the "truth" within company policy and employment law.
Recruiters can also be working to fill a large number of openings at a time, so won't always follow-up exactly when they say they will.
BTW - thank you emails are perfectly acceptable during the interview process, in fact, the majority of hiring managers have been shown in surveys to prefer emails. In some companies/positions hand-written notes sent "snail mail" can make a candidate look out of touch.