NP-complete problems are those problems that are both NP-Hard and in the complexity class NP. Therefore, to show that any given problem is NP-complete, you need to show that the problem is both in NP and that it is NP-hard.
Problems that are in the NP complexity class can be solved non-deterministically in polynomial time and a possible solution (i.e., a certificate) for a problem in NP can be verified for correctness in polynomial time.
An example of a non-deterministic solution to the k-clique problem would be something like:
1) randomly select k nodes from a graph
2) verify that these k nodes form a clique.
The above strategy is polynomial in the size of the input graph and therefore the k-clique problem is in NP.
Note that all problems deterministically solvable in polynomial time are also in NP.
Showing that a problem is NP-hard typically involves a reduction from some other NP-hard problem to your problem using a polynomial time mapping: http://en.wikipedia.org/wiki/Reduction_(complexity)