You first need an understanding what it really is that you're trying to solve. This means breaking down the problem into its component parts, and figuring out which part is actually causing you difficulty. Oftentimes, this will involve getting rid of irrelevant information and assumptions that are just making things confusing. For example, Kepler's attempt to come up with his laws of planetary motion involved simplifying the problem enormously by making several key changes: that the planets move in perfect circles, and that their speed is constant. These assumptions were wrong, but they allowed Kepler to focus on the core of the problem of planetary motion and helped him understand it more deeply.
Look for similar problems that've already been solved, and try to find an analogy to your problem. If a hard problem has already been solved before (even if it's only approximate), you may be able to use that solution as a starting point for tackling your own problem. When the Wright brothers were first trying to develop a flying machine, they observed birds frequently – one day they noticed that whenever a buzzard would lift one side of the its wing up, it would bank and turn. This led them to add roll control into the original Wright Flyer using ailerons, which are still used in airplanes today.
Restate the problem in as many ways as possible. Try to look at it from many different perspectives. This can help you see things that you might have missed before, and it may also give you new insight into how best to solve the problem. Einstein's discovery of the theory of relativity can be traced back to a thought experiment where he wondered what someone would see if they were riding alongside a beam of light. He concluded “I should observe such a beam of light as an electromagnetic field at rest”, or that the beam of light would appear stationary. According to Maxwell's equations this shouldn't have been possible. The shift in perspective provided by his thought experiment eventually lead to his discovery that the laws of physics are the same for all observers, regardless of their relative motion.
Generalize the solution to an already solved problem and see if it can apply to your problem. Universal explanations are at the root of all progress. By taking specific solutions and understanding their underlying principles, we can develop more universal theories that can be applied to a wider range of situations. Newton recognized that Kepler's laws of planetary motion were really just a special case of a more general law of gravitation. By generalizing Kepler's laws, he was able to develop a theory that explained the motion of all objects in the universe – the law of universal gravitation.
Divide and conquer. Another useful strategy for solving hard problems is to break them down into a series of smaller, more manageable sub-problems. By attacking each sub-problem separately, you can often make progress on the overall problem that wouldn't have been possible by trying to tackle it all at once. The Manhattan Project's goal of developing an atom bomb was complex, but could be divided into many less (albeit still hard) sub-problems: splitting the atom through neutron bombardment, understanding how to create a self-sustaining nuclear chain reaction, developing the technology to enrich uranium isotopes, engineering the detonation mechanism with traditional explosives, building the bombs themselves, and so on.
The best way to solve a hard problem is by understanding the system and the principles that govern it. Humans have attempted manned flight for at least 10,000 years, however most of those attempts were some variation of jumping off a cliff with wings – often ending with someone at the bottom of a cliff. Once we understood the requisite aerodynamic principles such as lift, drag, and thrust – it was within the relative blink of an eye that we were able to send a man to the moon.
Good explanations are the root of all progress. They're the single most powerful force in the known universe.