So to start off with, see Wikipedia:
Problems that can be solved in theory (e.g., given infinite time), but which in practice take too long for their solutions to be useful, are known as intractable problems.
Your problems may be many things, but they are probably not intractable. So let's attack the heart of the issue:
How do you break down problems to a level that others can assist with?
The obvious answer is debugging. A problem occurs when your program does something you don't expect. So, at every step, you want to make sure that reality is congruent with your expectations. When you reach a point where what's happening is not what you expect, then you've found your issue.
People often post asking for help for what they "think" is wrong. Maybe they googled the error and tried implementing the solution in the first result. Maybe their rubber ducky told them. Frankly, what you "think" is usually worthless. To quote Richard Feynman:
It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong.
So first figure out what's wrong!
From there, it's simply about isolating the inputs and outputs. People don't need to understand your whole program - they simply need to see what's coming in, and what's supposed to come out. You should always describe the source of what is coming in, because sometimes what you think is going in is not what's really going in.
At that point, the problem can usually be solved. Some SO guru will see what's up, perhaps ask you to do something, and you'll accept their answer and say "thanks a lot!" or something like that.
Remember, find the point where expectations and reality differ. Write the basic case that causes this. Implement the solution. QED.