Cheating requires opportunity. There are a lot of ways to prevent it, and I really think that's a better approach than trying to prove it happened after the fact.
We're currently dealing with an accusation that four of our students were cheating on two exams (I witnessed two of them collaborating on answers, and was pretty sure I saw them copying answers off the other two as well, but really have no evidence that two of them were actually cooperating). The student honor council wants to pursue it, since they claim it has happened in other courses too, so we'll go along with it, but I prefer approaches that would have avoided that from happening in the first place. There is no indication at all that they cheated on the exam I had primary responsibility for proctoring, and no students have accused them of cheating on that exam...I simply didn't allow any opportunity...if students got too close together, I moved them and reminded them to keep their answer sheets folded so others couldn't see them. The exam I witnessed them cheating on was one I was helping proctor, but didn't have responsibility for how it was organized or started. I'm now addressing this with the course coordinator to find ways to prevent it on future exams (aside from telling the students in question that there have been accusations from other students and they should voluntarily sit apart from one another so future accusations can be avoided). Even so, once I noticed them cheating, I stopped it by simply standing behind them for most of the exam. Our university allows us to still move students if we suspect copying, but I prefer not to do that. Sometimes what appears to be cheating really is innocent, and to move them is equivalent to accusing them in front of the entire class, and even if they turn out to be innocent, they will still be viewed as guilty by their peers. So, I prefer to avoid that quagmire (I cut my teeth as a TA in the litigious state of NJ, so avoid things that could risk legal action from students).
The best approach I've ever found is to randomize seating on exams. On the day of the exam, post a seating chart of where students need to sit. This way, they can't plan ahead who will be around them, what seat they'll be in (so no answers taped under the desk in advance of the exam), and splits up the groups that have planned strategies for copying off one another.
The other things to watch for/listen for are answers inside baseball caps (I tell them they can either take the cap off and put it on the floor where it will remain for the exam, or they can leave it on but turned backward so the bill is in back of their head, but it then must stay on their head for the whole exam), or on beverage containers (especially soda bottles...they can write answers behind the label, repaste it on, then drink down enough soda to read the label), and tapping or clicking of pens. That was an old fraternity trick after the pyramid seating arrangements to put the smartest student in front where everyone else could copy off of them, to tap out answers for multiple choice exams, either in morse code or 1 tap = A, 2 taps = B, etc. You don't have to accuse anyone of anything if they start tapping pencils or clicking pens, just tell them it's disruptive to people around them and ask them to stop.
The only thing that always astounds me is that students who cheat always seem to cheat off other poor students. I've never seen anyone get better than a C by cheating.
Though, if you're talking about homework assignments...why are you wasting your time grading homework that's in a solutions manual? Usually, that's why the solution's manual has only every other problem solved, so you can assign the other half of the questions for homework. Otherwise, an easy fix is to make up your own problems to assign rather than using ones directly from the book.