Bottlenecking is not an error, something broken that can be fixed. It's just the name for the universal situation in which one component of a system holds the rest of it up by being slower. An easy-to-visualize analogy is an assembly line: if each part can be attached to a car in ten seconds, the car proceeds along the line normally. If one person is responsible for sewing on every seat cushion, though, and they take twenty seconds to do it, the whole line backs up. To avoid a mess of unfinished cars, every other station, which could put a car through in ten seconds, must slow down to the rate of one action every twenty seconds.
An example of a bad PC bottleneck would be a 2600K/GTX 570 build with 1gb of RAM. The processor and graphics card would be forced to sit practically idle, waiting on the data that should be provided by more RAM.
Bottlenecking can only be "fixed" (it can never really be eliminated; you can only minimize it) by smart part choices. Ideally, disregarding upgrade paths (though those are important), a PC should have parts that all reach their limit at around the same point. It can be detected by people with experience, who know what parts have relatively similar levels of performance.