What printer do you have? I think the brand plays a huge part into this as well. I'm reluctant to use any MakerBot printer again, after ongoing problems with two of their printers, both $2k+. Not that I have the money to buy even a cheap printer of my own, but I still think they're cool to use and capable of doing a lot, so I'm interested in using others at some point.
I went with the Robo3D R1+plus, and have been very happy with it for the ~3 months I've owned it so far. It's sold as a complete pre-built unit (I was running my first print within about 30 minutes of unboxing it), but it's really a RepRap printer, running the Marlin firmware so it's based on open platform standards. When you open the unit up the guts is simply an Arduino with a (slightly optimized) RAMPS board. The non-printed upgrades I've done so far were to change to a dual-fan parts cooling solution (helped tremendously with bridging), replace the original Hexagon hotend with an E3D V6[*], and add a full-graphics LCD board, as well as an external Pi2 to run OctoPrint and a webcam to watch it remotely and take timelapses. All told it's probably another ~$150 in add-on parts. All I've really printed to use on the printer so far was an oiler for the filament, a piece to make the included spool holder work better (this is a simple design deficiency on Robo3D's part, I originally printed a different spool holder but stopped using it pretty early on), a resized mounting plate to deal with the E3D hotend's different mounting requirements (also required taking a drill to the stock Greg's Wade extruder to increase a hole for the E3D's PTFE tubing), fan ducts to go with the dual-fan parts cooler, a grill to close off an area in the unit where things might fall inside the printer, a case/mount for the full-graphics display, and a bracket that attaches to the bed that I plan to attach other things to (a scraps tray to help with scraping the bed clean and a mount for my camera so it can move with the bed rather than sit in front of it. I do want to make a cable chain to replace the default cable management, but haven't finished the design yet (most of the above items were my own design, sometimes based on someone else's). And of course I've made some minor tweaks to the firmware, to support the full-graphics display (by default it only supports the text display) and to set a different extrusion default as Robo's value was more than 10% off (under-extruding).
My biggest gripe so far is with the bed heater, it doesn't span the full XY print area (for now I've reduced the usable print area to avoid running out of the heated zone) and the heater itself is pretty uneven (proven by my IR camera), so I can even get some lifting within the "heated area" if I'm not diligent with the hairspray in those spots. There are solutions to this on the excellent community forum Robo3D has, but they're pretty involved (and generally require adding higher-current relays and a beefier power supply), so I haven't tried to tackle that one yet, it's manageable so long as you're careful about it and don't try to do a full 10x9 print (I'm limited to more like 8x8 right now which still isn't too shabby for what I'm printing).
[*] Technically I'm using a V6lite though I also have a V6. I figured I'd upgrade the hotend eventually after hearing so many good things about the E3D V6, but that plan got thrown into overdrive when I had a serious clog (jam? I forget which is which) from crappy filament I bought from Fry's (Shaxon), and I wound up breaking off the Hexagon's nozzle trying to put things back together after clearing the clog (didn't realize that you're supposed to have the heatbreak hot when re-installing the nozzle). So the printer was down for a few days as I panic-ordered the E3D V6, and I realized that I could get a V6lite delivered a few days faster than the V6 so I ordered it as well, figured it also wouldn't hurt to have a spare in case the main V6 ever failed, but so far I haven't bothered to go from the V6lite to the V6 since I'm only printing PLA so far and the V6lite is working perfectly for that.