Since starting my undergrad studies (in Maths -- !) I have struggled to grasp the concept of "rigor". My "proofs" tend to have the right framework but somehow they are said to "lack rigor", this has cost me many marks and is very frustrating... Any advice?
I think one important response to this is that it is not only about mathematics, but about language, and implied context. That is, in ordinary use of language, there is usually so much shared, understood context that what we say can be very imprecise, just a hint, in effect referring to a huge body of prior understanding. Thus, horrific grammar, completely ambiguous antecedents of pronouns, lack of verbs, and such things are effectively harmless, because the current message need impart so little information.
In fact, ordinary language is mostly "failing"... by a strict standard... but, in fact, it does not fail, because the actual context is so rich. (Think of explaining the details of a very cultural-specific tradition to someone from a wildly different culture.)
In contrast, in the very stark context of beginning university mathematics, almost nothing is "understood" or taken for granted. The implied context has almost nothing in it, in comparison to ordinary language. Still, this is not about mathematics itself... When we finally look specifically at technical-mathematical issues, in addition to all the previous, we are trying to capture things near the edge of human experience (and intuition). I'd claim it's not only about "logic" or "rigor" (meaning conformity to standards, which may change depending on context), but as much as anything about the crazy level of precision necessary in situations where there's essentially a null shared context.
To overcome lack of practice in operating in such a situation is as difficult for reasons of language as reasons of mathematics, I think.
(Indeed, in "ordinary" situations, people who give needless details, or insist on having irrelevant, tiny details, are considered to lack common sense...)
Thinking a little more broadly about precision in more ordinary language may be useful. It's not only about mathematics.
As Deven Ware notes, it's hard to say what the issue might be without seeing some examples. However, perhaps it might help you to specifically practice writing rigorous proofs from first principles.
For example, try to prove that $1 + 1 = 2$ based on the Peano axioms of arithmetic. (It's not very hard.) At every step of the proof, note exactly which axiom or definition you've used. Don't skip any steps.
Of course, the dirty little secret is that very few proofs actually written by working mathematicians are completely rigorous in this sense — they often omit "trivial" steps or rely implicitly on unstated "well-known" lemmas. However, to be acceptable, a proof does need to be at least rigorous enough that a reasonably competent mathematician can see how to fill in the gaps. Practicing rigorous proofs helps you see where the gaps in your proofs are, and to be sure that you won't leave any gaps you don't know how to plug if needed.
I had the same problem making the "transition" from computational mathematics to proof-oriented classes. Two books that I can definitely recommend on the subject are "Mathematical Proofs" by Chartrand et al. and "How to Prove It" by Velleman. Carefully following the examples and working through the exercises really helped me to gain an understanding of the difference between knowing that a proposition is true and providing a "rigorous" proof of it.
As far as check-points for creating a proof, I prefer to sketch out a plan and then try "attack" it myself, looking for places where the logic is not clear or where the statements are ambigous, and then try to fix each of those holes one by one.