One thing that sometimes helps is to look at the truth tables for the parts you have (only the Nand when you're implementing Not) and try to see patterns that look like the gate you want. This may be easier if you cover one input column with your finger, or cover the top half or bottom half of the entire table.
Another thing that can help you see what existing gates do is to make truth tables where one of the inputs is "signal." For example, for some mythical gate:
a | b | c | out |
-------------------------
F | sig | F | F |
F | sig | T | /sig | (this means Not sig)
T | sig | F | F |
T | sig | T | sig |
This gate's c input selects whether the signal on b gets through. The a input determines if the signal is inverted on the way through.
If you had one of these gates and you needed an And, set the signal always True and the output will be a And c.
--Mark