First, realize that it's much better to try a first kiss in a private or semi-private location where she's most likely to feel comfortable.
Don't go for the kiss without first testing her level of interest in you.
The easiest way to do that is to hold her hand. This can be done very easily after drinks or dinner by walking her back to her car. Just hold her hand immediately after you step out of the restaurant. If you lack a bit of confidence and you feel like you have to say something, you can try "hey, I don't want you to get lost" with a smile. If she's crossing her arms because she's cold, offer her your jacket -- she should uncross her arms while she's putting it on, allowing you to grab her hand.
Another way to test her level of interest is to touch her hair. This works great if you guys are sitting side-by-side on a bench in a park, for example. Put your hand behind her head and caress her hair. If she lets you, you're in... she wouldn't let someone who's just a friend do that.
If she responded well to your test, it means she's receptive to a kiss. Again, you want to find a good moment to do that, and a super public place may not be good. However, realize there's no perfect moment, really, to try and kiss her. Don't put so much pressure on yourself to find the perfect moment. Rather, find a good moment and give it a try.
Realize if she says no or gives you the cheek, it probably means "not yet". You may have caught her by surprise (and her instinctive reaction was to move away). Or she may not be comfortable with the setting or situation. You'll need to try again in a little bit. Don't make a big deal out of it, though. The worst thing you can do is to ask her why she didn't want to kiss you. So don't do that. Just start talking like nothing happened.
Now, I want to give you a few additional pointers that can make initiating the kiss easier:
1. Start the kiss by caressing her face (with your hands) first
This lets her know what's going to happen and can make her (and you) more comfortable. Start with your hand near her ear and gently brush her hair away, caress her face by contouring it, and slowly move you hand toward her lips. Lean in and kiss her.
2. Use questions
This is not my favorite way to initiate a kiss as it's too obvious and "too transactional" for me, but if it makes you feel more comfortable and it's your style,use questions such as:
- Are you an impulsive person?
- Are you a good kisser?
- Do you want to kiss me?
If she says "yes", say "let's find out" and lean in and kiss her.
if she says she's not sure, do the same thing. If she says no, that means "not yet" -- try again later in a more private setting.
3. Look into her eyes
Look into her eyes, hold it, and just go for it knowing it's the right moment. Variation if you're a bit shy: look into her eyes, hold it for a couple of seconds, look at her lips, then look at her eyes again and go for the kiss by leaning in.
4. Make kissing an after thought
This is my favorite and it works great in intimate settings, for example, she's at your place and you guys haven't kissed yet. She's sitting on the couch, you start to gently caress her hair (you can just start doing it or use an excuse like "oh, lemme see your earrings"), brush her hair away from her ear and neck area, and start to gently kiss her neck. This will drive her crazy and she may not have expected it. Smoothly move your kisses / lips toward her cheek, and kissing her on the lips will be an afterthought.